51 lines
1.5 KiB
Rust
51 lines
1.5 KiB
Rust
use telers::{
|
||
event::{telegram::HandlerResult, EventReturn},
|
||
methods::RestrictChatMember,
|
||
types::ChatPermissions,
|
||
};
|
||
|
||
use crate::types::{
|
||
enums::target_user::TargetUser,
|
||
structs::handler_entity::{ExtractedEntityData, HandlerEntity},
|
||
};
|
||
|
||
pub async fn unmute_member(
|
||
handler_entity: HandlerEntity,
|
||
chat_id: i64,
|
||
user: TargetUser,
|
||
) -> HandlerResult {
|
||
let (bot, message, sender_builder): ExtractedEntityData = handler_entity.extract();
|
||
|
||
let user_id: i64 = user.get_id().unwrap();
|
||
|
||
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 {
|
||
let muted_user_name: String = user.get_user_name(&bot, &message).await.unwrap();
|
||
|
||
sender_builder
|
||
.reply_to(message.id())
|
||
.text(format!("С пользователя {} был снят мьют.", muted_user_name))
|
||
.build()
|
||
.send(&bot)
|
||
.await
|
||
.unwrap();
|
||
Ok(EventReturn::Finish)
|
||
}
|
||
}
|