пишу юзербота. нужно в чате получить команду (
от анонимного админа) и выполнить её, если пользователь действительно админ. Не знаю как реализовать "проверку на админа" при получении команды в чате.
На Telethon.
На Aiogram всё было просто - я делал лист с ID админов. Если в чат приходило сообщение с командой, бот проверял что ID отправителя был в списке, и тогда выполнял:
@dp.message_handler(commands="random_command")
async def mycommand(message: types.Message):
print(message.from_user.id) #Всегда возвращает айди отправителя
if str(message.from_user.id) in cfg.ADMINS_ID:
await message.reply('Бот выполнил команду')
else:
await message.reply('Эта команда доступна только админам сообщества')
На Telethon такой принцип
не работает, ибо сообщение
от имени чата возвращает NoneType вместо user_id, и работает только тогда, когда сообщение от юзера.
Естественно, аккаунт юзербота в чате имеет права админа.
@client.on(events.NewMessage(chats=cfg.CHAT_ID,pattern="/random_command"))
async def mycommand(event):
print(event.from_id) #Вернёт None если сообщение от имени чата
if str(event.from_id.user_id) in cfg.ADMINS_ID:
await client.send_message(cfg.CHAT_ID, 'Бот выполнил команду')
else:
await client.send_message(cfg.CHAT_ID, 'Эта команда доступна только админам сообщества')
Какие есть варианты решения проблемы?