简体中文
Telegram

消息 ❇️ Телеграм-боти. Власний клас-фільтр.

2025年10月19日
P
❇️ Телеграм-боти. Власний клас-фільтр. Ми має код обробника у якому є if-else для визначення логіки звичайний користувач/адміністратор. Але це не дуже добре: 1️⃣ Якщо в нас таких обробників буде багато, то if-else буде дублюватися і ускладнювати читання коду. 2️⃣ Ми не зможемо розділити логіку звич.користувачів і адміністраторів на різні файли-модулі. Написання власного фільтра дозволить розбити логіку на два обробника. Ми вже ознайомились з використанням готового бібліотечного фільтра Command та магічних фільтрів, давайте напишемо тепер свій клас-фільтр: from aiogram.filters import BaseFilter class BotAdminFilter(BaseFilter): async def __call__( self, 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 Як бачимо фільтр це клас який містить метод __call__ , отже об'єкти цього класу можуть викликатись як функції. ⚠️ Тип першого параметру __call__ буде залежати від типу події на яку підписуємось. При виклику фільтр вертає: ▪️ вертає False якщо при цьому оновленні не треба викликати обробник — воно не підходить ▪️ вертає dict якщо треба викликати обробник і підставити у нього додатковий аргумент from_user 🔗 aiogram documentation: Writing own filters @router.message(Command("start"), BotAdminFilter()) async def start_admin_handler(message: Message, from_user: User): await message.answer( f"<i>Hello admin</i> {html.unparse(from_user.first_name)}!", parse_mode=ParseMode.HTML ) @router.message(Command("start"), F.from_user.as_("from_user")) async def start_handler(message: Message, from_user: User): await message.answer( f"<i>Hello</i> {html.unparse(from_user.first_name)}!", parse_mode=ParseMode.HTML ) 👉Фільтр у aiogram: 1️⃣ Визначає чи буде викликаний вказаний обробник подій 2️⃣ Може додавати параметри у обробник, вертаючи їх у словнику #tg_bots
❤1👍1
311 ·

信息流中的邻近内容

PPython Materials For Beginners✳️ Телеграм боти. Dependency Injection Доопрацюємо нашого бота: зробимо різні привітання для звичайних користувачів та адміністраторів. ID адміністраторів у насPPython Materials For Beginners投票
这条消息
PPython Materials For Beginners🔰 Телеграм-боти. Функція як фільтр. Класи, об’єкти яких можна викликати, — це добре: можна передавати додаткові налаштування через їхній ініціалізатор. Але в наPPython Materials For Beginners🔵 Консольні аргументи (Command-line Arguments). Приклад Повернемось до теми Корисні речі, які варто знати про процес Консольні аргументи, також відомі як аргуме
PPython Materials For Beginners ChatPython Materials For Beginners Chat@python_code_ua · 群组 · 科技
16成员330 天内发言的人
社群信息流 在 Telegram 中打开

来自搜索索引的公开信息流 ChatCrawler ——“公开 Telegram 的 Google”;随着该社群被抓取而更新。 时间为 UTC。

仅限公开内容,使用 Telegram 官方 API。 关于 · 常见问题 · 索引限制 · 移除页面 · 目录 · 搜索 · 计算方法