Asosiy kontentga o‘tish
Innovialabs

Telegram-bot uchun webhook yoki long polling: qaysi birini tanlash

Asoslar3 daq

Qisqacha

Long polling oddiyroq: bot apdeytlarni o‘zi oladi va domen hamda SSL siz ishlaydi, bu ishlab chiqish va kichik botlar uchun qulay; webhook HTTPS manzilni talab qiladi, lekin prodakshen, masshtablash va serverless uchun yaxshiroq.

Qisqa javob

Telegram botga hodisalarni (apdeytlarni) ikki usulda yetkazadi va bir vaqtda faqat bittasi ishlaydi.

  • Long polling — bot Telegramdan getUpdates metodi orqali o‘zi so‘raydi: «yangi narsa bormi?». So‘rov hodisa paydo bo‘lguncha yoki taymaut tugaguncha ochiq turadi, keyin bot darhol keyingisini yuboradi.
  • Webhook — siz bir marta setWebhook orqali Telegramga HTTPS manzilingizni aytasiz, keyin Telegram har bir apdeytni POST so‘rov bilan o‘zi yuboradi.

Soddaroq aytganda: polling da bot o‘zi qo‘ng‘iroq qiladi, webhook da qo‘ng‘iroqni kutadi.

Solishtirish

Long pollingWebhook
SozlashSkriptni ishga tushirdingiz — ishlaydiDomen, HTTPS va setWebhook sozlash kerak
HostingInternetga chiqadigan istalgan mashina, hatto NAT ortidaInternetdan kirish mumkin bo‘lgan ochiq manzil
SSL sertifikatKerak emasMajburiy (Telegramga yuklansa, o‘zi imzolagani ham bo‘ladi)
PortlarCheklovsizFaqat 443, 80, 88 yoki 8443
KechikishDeyarli bir zumdaDeyarli bir zumda
Doimiy jarayonKerak, bot doim ulanishni ushlab turadiShart emas, serverless ga mos
Botning bir nechta nusxasiMumkin emas: ikkinchi getUpdates 409 xatosini beradiBalanslovchi ortida mumkin
Lokal sinashOddiyTunnel yoki test server kerak

Amalda yetkazish tezligida deyarli farq yo‘q: long polling da javob hodisa paydo bo‘lishi bilan keladi.

Ishonchlilik qanday ishlaydi

Long polling. Bot ishdan chiqsa, apdeytlar Telegram tomonida to‘planadi va qayta ishga tushgandan keyin olinadi. Ular cheklangan vaqt saqlanadi, shuning uchun uzoq to‘xtab qolish hodisalarni yo‘qotishni anglatadi. offset ni to‘g‘ri uzatish muhim, aks holda apdeytlar takror keladi.

Webhook. Serveringiz xato bilan javob bersa yoki javob bermasa, Telegram qayta yuboradi, lekin bir necha muvaffaqiyatsiz urinishdan keyin to‘xtaydi. Holatni getWebhookInfo da ko‘rish mumkin: kutilayotgan apdeytlar soni va oxirgi xato matni.

Webhook uchun ikki qoida:

  • tez javob bering — darhol 200 qaytaring, og‘ir ishni navbatga qo‘ying;
  • manbani tekshiring — setWebhook ga secret_token uzating, Telegram uni X-Telegram-Bot-Api-Secret-Token sarlavhasida yuboradi. Usiz kelgan so‘rovlarni rad eting.

Webhookni qanday sozlash kerak

curl -X POST "https://api.telegram.org/bot<TOKEN>/setWebhook" \
  -d "url=https://example.com/telegram/webhook" \
  -d "secret_token=long_random_string" \
  -d "drop_pending_updates=true"

Holatni tekshirish:

curl "https://api.telegram.org/bot<TOKEN>/getWebhookInfo"

Polling ga qaytish uchun deleteWebhook ni chaqiring: webhook o‘rnatilgan ekan, getUpdates xato qaytaradi.

Qachon qaysi birini tanlash

Long polling mos keladi, agar:

  • botni lokal ishlab chiqayotgan va sinayotgan bo‘lsangiz;
  • bot kichik va bitta nusxada ishlasa;
  • serverda ochiq manzil yoki domen bo‘lmasa;
  • iloji boricha oddiy ishga tushirish kerak bo‘lsa.

Webhook mos keladi, agar:

  • bot prodakshenda bo‘lsa va sizda HTTPS li domen allaqachon bo‘lsa;
  • yuklama ostida botning bir nechta nusxasini ishga tushirish kerak bo‘lsa;
  • bot serverless platformada yoki veb-ilova bilan birga ishlasa;
  • doimiy ishlab turadigan jarayonni ushlab turishni istamasangiz.

Ko‘p uchraydigan ishchi variant: lokal — polling, serverda — webhook. aiogram kabi kutubxonalar ikkala rejimni qo‘llab-quvvatlaydi, almashtirish odatda bir necha qatorga to‘g‘ri keladi.

Ko‘p uchraydigan xatolar

  • Polling bilan botning ikki nusxasini ishga tushirish — ular bir-biridan apdeytlarni «o‘g‘irlaydi» va 409 xatosini oladi.
  • Webhookka javob berishdan oldin uzoq ishlov berish — Telegram buni nosozlik deb hisoblaydi va apdeytni qayta yuboradi.
  • secret_token ni unutib, hammadan so‘rov qabul qilish.
  • Server ko‘chirilgandan keyin webhook manzilini yangilamaslik.

Ko‘p beriladigan savollar

Foydalanuvchi uchun farq sezilmaydi. Ikkala usul ham apdeytni hodisadan deyarli darhol keyin yetkazadi; tanlov tezlikka emas, infratuzilmaga bog‘liq.

Bunda yordam beramiz

O‘zingiz shug‘ullanmasdan natija olishni istasangiz — biz har kuni shu bilan shug‘ullanamiz.

Loyihani muhokama qilish

Yana o‘qing

G‘oya yoki vazifangiz bormi? Bizga aytib bering

Ish kuni davomida javob beramiz va yechim taklif qilamiz. Konsultatsiya bepul.