use crate::{
    consts::manage::*,
    errors::UserBotError,
    userbot::{CommandHandlerResult, UserBot},
};
use grammers_client::types::{InputMessage, Message};
pub async fn pin_handler(bot: &mut UserBot, message: &mut Message) -> CommandHandlerResult {
    let reply_id = message
        .reply_to_message_id()
        .ok_or(UserBotError::NoArguments)?;
    bot.client.pin_message(&message.chat(), reply_id).await?;
    message.edit(InputMessage::markdown(PIN_TXT)).await?;
    Ok(())
}
pub async fn unpin_handler(bot: &mut UserBot, message: &mut Message) -> CommandHandlerResult {
    bot.client.unpin_all_messages(&message.chat()).await?;
    message.edit(InputMessage::markdown(UNPIN_TXT)).await?;
    Ok(())
}
pub async fn promote_handler(bot: &mut UserBot, message: &mut Message) -> CommandHandlerResult {
    let user = bot.get_arg_user(message).await?;
    bot.client
        .set_admin_rights(&message.chat(), &user)
        .load_current()
        .await?
        .pin_messages(true)
        .delete_messages(true)
        .ban_users(true)
        .invite_users(true)
        .await?;
    message.edit(InputMessage::markdown(PROMOTE_TXT)).await?;
    Ok(())
}
pub async fn demote_handler(bot: &mut UserBot, message: &mut Message) -> CommandHandlerResult {
    let chat = message.chat();
    let user = bot.get_arg_user(message).await?;
    bot.client.set_admin_rights(&chat, &user).await?;
    message.edit(InputMessage::markdown(DEMOTE_TXT)).await?;
    Ok(())
}