Telegram bot uchun local bot api serverni o’rnatish
Assalomu alaykum!
Ushbu maqolada telegram bot uchun local bot api serverni docker container da ishga tushirishni ko’rib chiqamiz.
Ushbu maqolani boshlashdan avval kompyuteringizda docker va docker-compose o’rnatilganligini tekshiring! Agarda sizning kompyuteringizga docker, docker-compose ni o’rnatishni iloji bo’lmasa local bot api serverni docker container siz ham ishga tushirsa bo’ladi lekin bu juda ko’p vaqt oladi. O’rnatishni ushbu
havoladan ko’rishingiz mumkin.
Local bot api serverni ishga tushirish uchun bizga app_id va app_hash lar kerak bo’ladi. Ularni ushbu
linkdan olish mumkin. Shu linkka kirasiz telegram uchun foydalanadigan telefon raqamingizni kiritasiz, sizning telegram accountingizga xabar yuboriladi. Xabarda ko’rsatilgan kodni so’ralgan joyga kiritasiz. Undan keyin API development tools ga o’tib yangi app yaratib olasiz. So’ngra sizga app_id va app_hash lar beriladi.
Docker va docker-compose o’rnatib olgan bo’lsangiz local bot api serverni ishga tushirish uchun docker-compose fayl yozishga kirishsak bo’ladi.
Avvalo aniqlashtirib olishimiz kerak bo’lgan bir narsa bor. Siz botni qanday ishga tushurmoqchisiz? Ya’ni docker containerda yoki u siz. Shunga qarab docker-compose fayl yoziladi. Ularning turlicha bo’lishiga sabab esa bot ni webhook orqali ishlatishda telegram server biz set qilgan webhook url ga update’larni post qiladi. Agar sizning local bot api serveringiz docker containerda, bot esa docker containerda bo’lmasa, sizning botingiz ishlab turgan portga local telegram bot api server update’larni post qila olmaydi. Chunki ular ikkovi bitta tarmoq emas. Ikkalasini bitta tarmoq qilib ishlatsa ham bo’ladi. Hozir shuni ko’rib chiqamiz.
Qurilmamizning operatsion tizimiga qarab docker-compose fayllar turlicha yoziladi.
Windows va MacOS da:
version: '3.1' services: botapi: image: aiogram/telegram-bot-api:latest environment: TELEGRAM_API_ID: "app_id" TELEGRAM_API_HASH: "app_hash" TELEGRAM_LOCAL: "1" ports: - 8081:8081 volumes: - telegram-bot-api-data:/var/lib/telegram-bot-api restart: on-failure
Linux da:
version: '3.1' services: botapi: image: aiogram/telegram-bot-api:latest network_mode: "host" environment: TELEGRAM_API_ID: "app_id" TELEGRAM_API_HASH: "app_hash" TELEGRAM_LOCAL: "1" volumes: - - telegram-bot-api-data:/var/lib/telegram-bot-api restart: on-failure
bu yerdagi app_id va app_hash ni olishni yuqorida ko’rib chiqdik.
bu yozilgan faylni ishga tushirish uchun shu fayl joylashgan papkaga o’tib:
docker-compose up -d
agar hammasi joyida bo’lsa
http://localhost:8081/ shu linkka kirganingizda sizda quyidagicha ma’lumot chiqishi kerak:
{"ok":false,"error_code":404,"description":"Not Found"}
Ushbu ma’lumot chiqdimi? Ha bo’lsa demak hammasi to’g’ri ishlayapti.
Botni webhook orqali ishlatmoqchi bo’lsangiz webhook urlni set qilishda windows/macos da urlni
http://host.docker.internal:8080/
Linuxda:
http://localhost:8080/
bu yerda 8080 sizning botingiz ishlab turgan port.
Bu maqolani tayyorlashda ushbu ma’lumotlardan foydalanildi.
Kamchiliklar uchun uzr!
Boshqalar
Telegram bot uchun local bot api serverni o’rnatish