English
Open in Telegram

Thread🟣 Опис роботи echo-бота. Основні класи.

2 messages · –
P
🟣 Опис роботи echo-бота. Основні класи. ✅ Токен бота беремо з змінних оточення або .env-файлу якщо він є. ✅ Чисто з естетичних причин ми перехоплюємо виключення KeyboardInterrupt. Це виключення виникає при натисненні юзером Ctrl+C у терміналі і в таких випадках мабуть ми не хочемо бачити stack trace помилок. ✅ Для автоматичного закриття сесії бота використовуємо асинхронний контекстний менеджер. ✅ Класи Dispatcher, Router дозволяють реєструвати обробники оновлень(подій). Загалом система диспетчеризації оновлень по обробникам може мати складну деревовидну структуру. Dispatcher - це головний об'єкт який може включати в собі Router-и, водночас Router може включати в себе інші Router-и. Звучить складно, але загалом практичний сенс цього полягає у тому що ми групуємо обробники, по якомусь принципу у логічну одиницю -- Router, а Router-и додаємо у Dispatcher. Користь Router-ів у тому що ми можемо легко винести обробники оновлень у окремі файли - модулі. Крім того кожен роутер може мати свій Filter і/та Middleware, що дуже зручно (про це можливо пізніше) Розглянемо приклад структури проєкту: project/ ├── main.py (містить dp: Dispatcher) ├── keyboards.py ├── middleware.py └── handlers/ ├── __init__.py ├── admins.py (містить admin_router: Router) ├── private.py (містить private_router: Router) ├── сhannels.py (містить сhannels_router: Router) └── group_users.py (містить group_router: Router) main.py from handles.admins import admin_router from handles.private import private_router # ... dp = Dispatcher(storage=storage) dp.include_router(admin_router) dp.include_router(private_router) # ... dp.include_router(group_router) Логіка розділення: ▪️Очевидно, що адміністратори бота і/або чату можуть мати особливі права і їх дії треба обробляти окремо. ▪️Окремо також варто оброблювати повідомлення у особисте спілкування з ботом. ▪️ Окремо оброблювати події в каналах та групах. ⚠️ Це лише приклад, структура-розділення має залежати від суті бота. Головне мати логічну вибудовану структуру, а не всі обробники у одному файлі. ✅ MemoryStorage - це клас сховища станів. Воно потрібне щоб тимчасово зберігати стан заповнення форми, а також дані полів які користувач вже заповнив перед тим як ці дані застосовувати(наприклад записати у БД) #tg_bots
👍1
1 · 222 ·
PPython Materials For Beginners ChatPython Materials For Beginners Chat@python_code_ua · group · Tech
16members3writing in 30 days
Venue feed Open in Telegram

An open public feed from the search index ChatCrawler — “Google for public Telegram”; refreshed as the venue is crawled. Times are UTC.

Public content only, official Telegram API. About · FAQ · Index limits · Remove a page · Catalog · Search · How we count