Telegram bot qanday ishlaydi
BotFather va token, update nima, polling va webhook
Telegram bot — Telegram'dagi oddiy hisob, lekin uni odam emas, dastur boshqaradi. Botlar do'kon buyurtmalarini qabul qiladi, test o'tkazadi, eslatma yuboradi, guruhni boshqaradi. Bu saytning o'zi ham bot orqali kirish kodi va kechki eslatma yuboradi.
1-qadam: BotFather va token
- Telegram'da @BotFather ni oching (bu Telegram'ning rasmiy boti).
/newbot→ bot nomi → bot foydalanuvchi nomi (oxiribotbilan tugashi kerak, masalanmening_test_bot).- BotFather token beradi:
123456789:AA...ko'rinishidagi uzun qator.
⚠️ Token — botning paroli. Kim tokenni bilsa, botingizni boshqara oladi. Uni kodga yozmang, GitHub'ga yuklamang —
.envfaylida saqlang (Git kursi, 5-dars). Token tarqalib ketsa — BotFather'da/revokebilan yangilang.
Update — Telegram'dan keladigan xabar
Foydalanuvchi botga yozganda, Telegram sizning dasturingizga update yuboradi — JSON ko'rinishidagi ma'lumot. Python'da u lug'atga aylanadi:
update = {
"update_id": 1001,
"message": {
"message_id": 55,
"from": {"id": 7001, "first_name": "Malika", "language_code": "uz"},
"chat": {"id": 7001, "type": "private"},
"text": "/start",
},
}
xabar = update["message"]
print("Kimdan:", xabar["from"]["first_name"])
print("Chat ID:", xabar["chat"]["id"])
print("Matn:", xabar["text"])
print("Buyruqmi:", xabar["text"].startswith("/"))
# Natija: Kimdan: Malika
# Natija: Chat ID: 7001
# Natija: Matn: /start
# Natija: Buyruqmi: True
chat.id — kimga javob yuborishni bildiradi. Bot javob berganda shu raqamni ko'rsatadi.
Update qanday yetib keladi: polling va webhook
| Usul | Qanday | Qachon |
|---|---|---|
| Polling | dastur Telegram'dan qayta-qayta «yangi xabar bormi?» deb so'raydi | o'rganish, kichik botlar — oddiy |
| Webhook | Telegram o'zi sizning serveringiz manziliga yuboradi | katta botlar — HTTPS'li server kerak |
Bu kursda polling ishlatamiz — o'z kompyuteringizda ham ishlaydi.
Amaliyot Python
Update'lar ro'yxatidan faqat matnli xabarlarni ajratib, kimdan va nima yozilganini chiqaring (rasmda text yo'q):
Aziz: Salom
Malika: /start
input() uchun ma'lumotlar
Yechimni ko'rish
updates = [
{"message": {"from": {"first_name": "Aziz"}, "text": "Salom"}},
{"message": {"from": {"first_name": "Jasur"}, "photo": ["rasm.jpg"]}},
{"message": {"from": {"first_name": "Malika"}, "text": "/start"}},
]
for u in updates:
xabar = u["message"]
if "text" in xabar:
print(f"{xabar['from']['first_name']}: {xabar['text']}")