Проверка каждого сообщения aiogram
Есть бот телеграмм, написанный на aiogram. Есть несколько хендлеров, как реализовать возможность проверки каждого сообщения, которое отправляется боту, не идет речь про декоратор без аргументов. Нужно проверять каждое сообщениe, включая команды, можно ли реализовать такое в aiogram? Имеется в виду, что есть определенный список id, только на эти id из списка бот реагирует, остальное игнорирует.
Ответы (2 шт):
Автор решения: wakaree
→ Ссылка
Как вариант проверять на наличие айди через лямбда функцию:
@dp.message_handler(lambda user: user.from_user.id in example_list)
async def example(message: types.Message):
await message.answer("")
Автор решения: TimKostenok
→ Ссылка
Можно использовать IDFilter, встроенный в aiogram. Есть два способа реализации:
Первый (явно указывается IDFilter)
from aiogram.dispatcher.filters import builtin
admin_list = [] # Список id пользователей, на которые бот будет реагировать
@dp.message_handler(builtin.IDFilter(user_id=admin_list))
async def example(message: types.Message):
await message.answer(message.text) # Echo bot
Второй (используется просто user_id= без указывания IDFilter):
from aiogram.dispatcher.filters import builtin
admin_list = [] # Список id пользователей, на которые бот будет реагировать
@dp.message_handler(user_id=admin_list)
async def example(message: types.Message):
await message.answer(message.text) # Echo bot