2024-07-09 22:00:01 +03:00
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
if let Some(id) = user.get_id() {
|
|
|
|
|
user_id = id;
|
|
|
|
|
} else {
|
2025-04-03 11:16:17 +03:00
|
|
|
|
sender_builder.build().send(&bot).await?;
|
2024-07-09 22:00:01 +03:00
|
|
|
|
|
|
|
|
|
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 {
|
2025-04-03 11:15:41 +03:00
|
|
|
|
let muted_user_name: Box<str> = user.get_user_name(&bot, &message).await.unwrap();
|
2024-07-09 22:00:01 +03:00
|
|
|
|
|
|
|
|
|
sender_builder
|
|
|
|
|
.reply_to(message.id())
|
|
|
|
|
.text(format!("С пользователя {muted_user_name} снят мут."))
|
|
|
|
|
.build()
|
|
|
|
|
.send(&bot)
|
|
|
|
|
.await?;
|
|
|
|
|
|
|
|
|
|
Ok(EventReturn::Finish)
|
|
|
|
|
}
|
|
|
|
|
}
|