Source
about aiogram | Створення мультиботу #цікаве👉 Мультибот - це бот, який може керувати і...
1 380 Views/Reach
2023-07-19 14:10
Message №22
🤖 Створення мультиботу #цікаве👉 Мультибот - це бот, який може керувати іншими ботами. В aiogram 3. X такого можна написати з коробки (тобто для його створення вже є готові інструменти)💭 Міньйон (мій сленг) - бот, що керується основним ботом😀 І навіщо мені цим користуватись? • запускати кастомні конфігурації ботів-шаблонів під свої потреби• копіювати функціонал основного бота і використовувати його на різних токенах• розділяти інтерфейс основного бота на декілька більш менших👀 Як цим користуватись? • для нормального мультибота необхідний вебхук (бонус внизу посту - як запустити найпростіший вебхук)• окрім SimpleRequestHandler для основного бота, нам потрібен буде TokenBasedRequestHandler, щоб реєструвати інших ботів-посіпак, він буде брати їх токени для створення вебхук посилань, тому обовʼязково треба, щоб в path у методі register була константа {bot_token} (класи брати із aiogram.webhook.aiohttp_server)🔅 MRE найпростішого мультибота: у нього міньйони додаються в рантаймі і підключаються до одного й того ж самого диспетчера (тобто виконують однакові дії)https://github.com/aiogram/aiogram/blob/dev-3.x/examples/multibot.py🪄 Псевдо-код для прикладу реєстрації міньйонів зі своїми роутерами (від мене)https://pastebin.com/GSbGe34K🎁 БОНУС - найпростіший вебхук в домашніх умовах💭 Якщо в тебе вийшло запустити aiohttp додаток (web. Application) і ти хотів би потестувати бота, але при цьому немає SSL сертифікату або лінь його робити, то можна скористатись безкоштовним reverse proxy сервером який буде пересилати POST запити від телеграму до твого бота по захищеному тунелю (навіть якщо программа знаходиться за NAT-маршрутизатором чи брандмауером і в тебе сірий IP)🛠 Називається цей інструмент - Ngrok1️⃣ Завантажуємо його (на будь-яку ОС чи навіть docker)2️⃣ Беремо порт на якому буде працювати наш aiohttp app, самого бота поки що не запускаємо. Далі заходимо в консоль і пишемо «ngrok http {your_port}» (для Windows там є окрема програма навіть). Далі ngrok видасть нам декілька посилань, беремо те, яке починається з https бо телеграм не буде слати на http3️⃣ Змінюємо посилання (BASE_URL) у нашій програмі на те, яке взяли у ngrok. Запускаємо бота, готово! Тепер бот буде працювати на вебхуці‼️ Це гарний спосіб, щоб тестувати бота на вебхуках, але не треба використовувати його в продакшині - краще зробити свій reverse proxy сервер, наприклад на nginx. До того ж кожний раз ngrok буде давати випадкову адресу, також там 2 години TTL у посилання (тобто прийдеться часто міняти), проте у зареєстрованих користувачів такого ліміту немає