🔰 Телеграм-боти. Функція як фільтр.
Класи, об’єкти яких можна викликати, — це добре: можна передавати додаткові налаштування через їхній ініціалізатор.
Але в нашому випадку це не потрібно — список ID адміністраторів ми отримуємо через механізм DI.
Тому ми можемо спростити код, написавши просто функцію, яка буде фільтром:
async def is_bot_admin(message: Message, settings: Settings) -> bool | dict[str, Any]:
if message.from_user and message.from_user.id in settings.bot.admins:
return {"from_user": message.from_user}
return False
@router.message(Command("start"), is_bot_admin)
async def start_admin_handler(message: Message, from_user: User):
... # код обробника
#tg_bots
👍1
355 ·