60 lines
1.7 KiB
Rust
60 lines
1.7 KiB
Rust
|
use telers::{
|
|||
|
event::{telegram::HandlerResult, EventReturn},
|
|||
|
methods::RestrictChatMember,
|
|||
|
types::{ChatPermissions, Message},
|
|||
|
Bot,
|
|||
|
};
|
|||
|
|
|||
|
use crate::types::{
|
|||
|
enums::target_user::TargetUser,
|
|||
|
structs::{handler_entity::HandlerEntity, message_sender::MessageSenderBuilder},
|
|||
|
};
|
|||
|
|
|||
|
pub async fn unmute(
|
|||
|
handler_entity: HandlerEntity,
|
|||
|
chat_id: i64,
|
|||
|
user: TargetUser,
|
|||
|
) -> HandlerResult {
|
|||
|
let (bot, message, sender_builder): (Bot, Message, MessageSenderBuilder) = (
|
|||
|
handler_entity.bot_instance,
|
|||
|
handler_entity.message_reciever,
|
|||
|
handler_entity.message_sender_builder,
|
|||
|
);
|
|||
|
|
|||
|
let user_id: i64 = match user {
|
|||
|
TargetUser::Id(id) => id,
|
|||
|
TargetUser::Reply => message.reply_to_message().unwrap().from().unwrap().id,
|
|||
|
_ => {
|
|||
|
return Ok(EventReturn::Cancel);
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
let default_member_permissions = ChatPermissions::all()
|
|||
|
.can_change_info(false)
|
|||
|
.can_manage_topics(false)
|
|||
|
.can_invite_users(false)
|
|||
|
.can_pin_messages(false);
|
|||
|
|
|||
|
let bot_action = RestrictChatMember::new(chat_id, user_id, default_member_permissions);
|
|||
|
|
|||
|
if let Err(error) = bot.send(bot_action).await {
|
|||
|
sender_builder
|
|||
|
.text(format!(
|
|||
|
"Невозможно снять мьют с участника чата по причине: {error:?}"
|
|||
|
))
|
|||
|
.build()
|
|||
|
.send(&bot)
|
|||
|
.await?;
|
|||
|
Ok(EventReturn::Cancel)
|
|||
|
} else {
|
|||
|
sender_builder
|
|||
|
.reply_to(message.id())
|
|||
|
.text("С пользователя был снят мьут.")
|
|||
|
.build()
|
|||
|
.send(&bot)
|
|||
|
.await
|
|||
|
.unwrap();
|
|||
|
Ok(EventReturn::Finish)
|
|||
|
}
|
|||
|
}
|