Проверка каждого сообщения 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
→ Ссылка