yangi

Telegram bot uchun local bot api serverni o'rnatish

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!


khalid - Texnoman foydalanuvchisi

Muallif haqida

khalid


Qiziq bo‘ladi:


Birinchi bo‘ling!

Iltimos, fikr bildirish uchun saytga kiring yoki ro‘yxatdan o‘ting!