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) } }