Задать вопрос
@Oxblad

Как сделать проверку на администратора в телеграм?

Хочу сделать проверку является ли человек в группе администратором или нет. На библиотеке aiogram
Я нашел метод проверки администратора
asyn ccheck( obj: Union [aiogram.types.message.Message, aiogram.types.callback_query.CallbackQuery, aiogram.types.inline_query.InlineQuery] )

Но я так и не понял что нужно ввести в скобках
  • Вопрос задан
  • 10682 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
shabelski89
@shabelski89
engineer
Согласно загугленной документации
from aiogram.dispatcher.filters import BoundFilter

class MyFilter(BoundFilter):
    key = 'is_admin'

    def __init__(self, is_admin):
        self.is_admin = is_admin

    async def check(self, message: types.Message):
        member = await bot.get_chat_member(message.chat.id, message.from_user.id)
        return member.is_chat_admin()

dp.filters_factory.bind(MyFilter)

@dp.message_handler(is_admin=True)
async def ...

Хендлер @dp.message_handler(is_admin=True) перехватывает сообщения и проверяет их функцией Check, которая возвращает True если сообщение написано админом, далее становится доступно выполнение придуманной Вами функции def ... внутри хендлера, при возврате False хендлер отбросит обработку сообщениы.
Ответ написан
@Wratixor
тут есть https://wratixor.ru/about/about_me
в aiogram 3 в middleware сделал так
data['isadmin']: bool = (await event.chat.get_member(event.from_user.id)) in (await event.chat.get_administrators())

можно запихнуть в фильтр или в самом обработчике команды сделать через message вместо event
дополнительно нужна проверка, что это группа, а не личный чат, чтобы в консоль не ругалось
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы