Now the admin_check function gets a second argument in the form of user_id, and this function is used in try_restrict
This commit is contained in:
parent
0ec0c94501
commit
7b31cccf31
|
@ -1,11 +1,11 @@
|
|||
use telers::types::{chat_member::ChatMember, User};
|
||||
use telers::types::chat_member::ChatMember;
|
||||
|
||||
pub fn is_admin(all_admin_members: &Vec<ChatMember>, user: &User) -> bool {
|
||||
pub fn is_admin(all_admin_members: &Vec<ChatMember>, user_id: i64) -> bool {
|
||||
all_admin_members
|
||||
.iter()
|
||||
.any(|admin: &ChatMember| match admin {
|
||||
ChatMember::Administrator(admin) => &admin.user == user,
|
||||
ChatMember::Owner(owner) => &owner.user == user,
|
||||
ChatMember::Administrator(admin) => admin.user.id == user_id,
|
||||
ChatMember::Owner(owner) => owner.user.id == user_id,
|
||||
_ => false,
|
||||
})
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
use telers::{errors::SessionErrorKind as ErrorKind, event::EventReturn, Bot};
|
||||
use telers::{errors::SessionErrorKind as ErrorKind, event::EventReturn, types::ChatMember, Bot};
|
||||
|
||||
use crate::types::structs::message_sender::MessageSender;
|
||||
use std::future::Future;
|
||||
|
||||
use super::demote::demote_user;
|
||||
use super::{admin_check::is_admin, demote::demote_user, get_all_admins::get_all_admins};
|
||||
|
||||
const DEMOTE_FAILURE_MESSAGE: &str = "Команда не может быть выполнена: \
|
||||
не удалось удалить административные привилегии пользователя.";
|
||||
|
@ -19,6 +19,18 @@ where
|
|||
{
|
||||
let (bot, user_id, chat_id): (&Bot, i64, i64) = demote_args;
|
||||
|
||||
let admins: Vec<ChatMember> = get_all_admins(bot, chat_id).await.unwrap();
|
||||
|
||||
if is_admin(&admins, user_id) {
|
||||
MessageSender::builder(chat_id)
|
||||
.text("Нельзя применить эту команду на администраторе или бота.")
|
||||
.build()
|
||||
.send(bot)
|
||||
.await
|
||||
.unwrap();
|
||||
return Err(EventReturn::Cancel);
|
||||
}
|
||||
|
||||
if future_callback().await.is_err() {
|
||||
if demote_user(bot, user_id, chat_id).await.is_err() {
|
||||
MessageSender::builder(chat_id)
|
||||
|
|
Loading…
Reference in New Issue