Oldingi dars hermes-kanallar — Gateway nima, qaysi kanallar borligi haqida overview edi. Bu darsda bir kanalni — Telegramni — boshidan oxirigacha ulaymiz. Qadam-baqadam, xatolar bilan birga.
1. Bot yaratish — BotFather
Telegram’da @BotFather ni toping (ko’k tasdiq belgisi bo’lgan rasmiy bot).
/newbotyuboring — nom bering (Mening Hermes Botim).- Username bering —
*_botbilan tugashi shart (hilol_hermes_bot). Band bo’lsa boshqa nom tanlang. - Javobda
HTTP API tokenkeladi —123456:AAH...ko’rinishida. Darhol nusxa oling.
Tokenni Hermes Settingsda saqlang, .env da emas. .env git’ga tushib ketishi mumkin, Settings esa shifrlangan saqlaydi va gateway restart bilan avtomatik yangilanadi.
Botni yaratganingizdan keyin BotFather’da
/setprivacy→Disableqilish shart emas — guruhda bot hamma xabarni ko’rishi uchun admin qilganingiz yetarli (3-bo’lim).
2. Gateway sozlash — Hermes Desktop
- Hermes Desktop →
Settings → Messaging → Telegramga kiring. Bot Tokenmaydoniga tokenni joylang,Save Changesbosing.- Gateway avtomatik restart bo’ladi — logni terminalda tekshiring:
[Gateway] Telegram adapter restarting...
[Gateway] Telegram polling started — getMe: @hilol_hermes_bot
[Gateway] Listening on 0.0.0.0:3000
Agar 401 Unauthorized ko’rsangiz — 4-bo’limga qarang. Portlar 3000 (gateway) va 8000 (core) — firewall’da yopiq bo’lmasin.
Maslahat
Avval shaxsiy chatda test qiling, keyin guruhga o'ting. Whitelist va topic xatolari aralashib ketmaydi.
3. Guruh va Topics — chat_id va whitelist
Guruhda 3 joyda xato chiqadi: guruh sozlamasi, bot huquqlari, whitelist.
- Yangi guruh yarating →
Manage Group → Topicsni yoqing. - Mavzular oching:
#general(buyruqlar),#capture(g’oyalar va fayllar). - Botni guruhga qo’shib admin qiling.
- Botga biror xabar yozib,
chat_idni oling:
curl -s "https://api.telegram.org/bot<TOKEN>/getUpdates" | jq
# message.chat.id = -1001234567890 (guruh)
# message.from.id = 123456789 (sizning ID)
chat_id manfiy bo’lsa — guruh, musbat bo’lsa — shaxsiy chat.
- ID’larni whitelist’ga qo’shing:
| Sozlama | Qayerda | Misol |
|---|---|---|
| Bot Token | Hermes Settings → Messaging → Telegram | 123456:AAH... |
| Allowed Users | Settings → Messaging → Telegram → Whitelist | 123456789 (sizning ID) |
| Allowed Groups | Settings → Messaging → Telegram → Groups | -1001234567890 |
| Topics | Telegram guruh → Manage Topics | #general, #capture |
Whitelist bo’sh bo’lsa bot hech kimga javob bermaydi — bu himoya, xato emas.
Test: #general da /ping yozing. Bot pong deb javob berishi kerak. Javob yo’q bo’lsa — logda odatda not whitelisted yoziladi.
4. Ko’p uchraydigan xatolar
| Xato | Sabab | Yechim |
|---|---|---|
401 Unauthorized |
Token eskirgan yoki noto’g’ri ko’chirilgan | Tokenni qayta nusxalab Settings’da yangilang → Save; eskisini BotFather’da /revoke qiling |
409 Conflict: terminated by other getUpdates |
Bir token ikki joyda polling (lokal + VPS) | Birini o’chiring yoki webhook’ga o’ting |
Javobsiz (ignored: not whitelisted) |
Whitelist bo’sh yoki username yozilgan | getUpdates dan from.id raqamini oling — username ishlamaydi |
| Topic’da javob yo’q | Bot admin emas yoki Topics yopiq | Botni admin qiling, Topics’ni yoqing |
429 Too Many Requests |
Loop’da spam, juda tez so’rov | 1-2s delay qo’shing, cron 10s dan kam bo’lmasin |
Xavfsizlik
Bot tokeni — parol bilan teng. Uni GitHub'ga, skrinshotga yoki guruh chatiga tashlamang. Token sizib chiqsa, istalgan odam sizning nomingizdan botni boshqaradi. Sizib chiqqan zahoti BotFather'da /revoke qilib yangi token oling va Hermes'da yangilang.
Xulosa
Oqim: BotFather → token → Settings → Save → log → guruh + Topics + admin → getUpdates → whitelist → /ping. Shaxsiy chatda ishladi, guruhda yo’q — muammo whitelist yoki admin huquqida. 401 — token, 409 — ikki polling to’qnashuvi.