Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. Telegram bot nima
- 2.2. Token va BotFather
- 2.3. Xabar qabul va javob
- 2.4. Buyruqlar (/start, /help)
- 2.5. Tugmalar (inline keyboard)
- 2.6. Holat (suhbat konteksti)
- 2.7. Bot arxitekturasi (polling/webhook)
- 2.8. Bot — API integratsiya amaliyoti
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Buyruqlar va javob (mock)
- Misol 2 — Tugmalar (inline keyboard)
- Misol 3 — Holat (ko'p bosqichli suhbat)
- Misol 4 — Amaliy: bot API integratsiya bilan (mock)
- 5. To'g'ri va noto'g'ri tushunishlar
- 6. Keng tarqalgan xatolar va yechimlari
- 7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 8. Eng yaxshi amaliyotlar
- 9. Amaliy topshiriq
- Xulosa
26.8-dars: Telegram bot
26-QISM — AVTOMATLASHTIRISH · 8-dars
1. Kirish va motivatsiya
Telegram — millionlab foydalanuvchi. Telegram bot — avtomatik javob beruvchi dastur: xabar qabul qiladi, javob beradi (ma'lumot, buyruq, xizmat). Botlar keng: eslatma, ob-havo, do'kon, qidirish, xabarnoma, o'yin. Bot — avtomatlashtirishning eng amaliy va mashhur shakli (odamlar Telegramda — ular yerda xizmat). Bir marta yozasiz — 24/7 avtomatik ishlaydi.
Telegram bot — Telegram Bot API bilan yaratiladi: token (BotFather'dan olinadi — bot kaliti), xabar qabul qilish (update — foydalanuvchi yozdi), javob berish (send_message), buyruqlar (/start, /help — bot amallari), tugmalar (inline keyboard — bosiladigan), holat (suhbat konteksti). Python'da mashhur kutubxonalar: python-telegram-bot, aiogram. Bot — API integratsiya 26.7-bob ning amaliy misoli: Telegram API bilan foydalanuvchiga xizmat. Bot qurish — avtomatlashtirishning tez natija beradigan sohasi.
Real vaziyat. Bir do'kon buyurtmalarni Telegram bilan qabul qilish kerak edi. Telegram bot yaratildi: /buyurtma buyruq, mahsulot tanlash (tugmalar), tasdiqlash. Mijozlar botda buyurtma berdi, bot bazaga yozdi (23-qism), sotuvchiga xabar yubordi. 24/7 avtomatik. Bot — do'konni Telegramda ochdi. Odamlar yerda — xizmat yerda.
Bu darsda Telegram bot yaratishni o'rganamiz.
Bu darsda:
- Telegram bot nima
- Token va BotFather
- Xabar qabul va javob
- Buyruqlar (
/start,/help) - Tugmalar (inline keyboard)
- Holat (suhbat konteksti)
- Bot arxitekturasi (polling/webhook)
- Amaliy: bot mantigi
ℹ Misollarda deterministik mock bot (soxta — real bot token va Telegram serveri talab qiladi) bilan sinaladi.
2. Nazariya — chuqur tushuntirish
2.1. Telegram bot nima
Avtomatik javob beruvchi dastur:
Foydalanuvchi → xabar (Telegram) → bot (Python)
→ javob → foydalanuvchi
Bot: 24/7 avtomatik xizmatTelegram bot — Telegram'da avtomatik javob beruvchi dastur (Python): foydalanuvchi xabar yuboradi, bot qabul qiladi, qayta ishlaydi, javob beradi. API integratsiya (26.7 — Telegram Bot API bilan). Botlar: ma'lumot (ob-havo, narx), xizmat (buyurtma, eslatma), o'yin, xabarnoma. Avtomatlashtirishning amaliy shakli — odamlar Telegramda, bot ularga xizmat. 24/7 ishlaydi (server). Bot — Telegram + Python.
2.2. Token va BotFather
Bot kaliti:
1. Telegram'da @BotFather'ga yoz
2. /newbot — yangi bot yarat
3. Nom va username ber
4. Token oli: "123456:ABC-DEF..."
# token — bot kaliti (maxfiy — 25.10 kabi) Token — bot kaliti (BotFather'dan): @BotFather (rasmiy bot) /newbot bilan yangi bot yaratadi, token beradi (123456:ABC...). Token — botni boshqarish kaliti (API so'rovlarda). Maxfiy (25.10 kabi — kodga yozMANG, muhit o'zgaruvchisi; sizib ketsa — bot o'g'rilanadi). BotFather — botlarni boshqarish (yaratish, sozlash, o'chirish). Token — botning shaxsiyati. Bot yaratish BotFather'dan boshlanadi.
2.3. Xabar qabul va javob
Bot ishi — qabul va javob:
# python-telegram-bot misol:
async def handle(update, context):
matn = update.message.text # foydalanuvchi xabari
await update.message.reply_text(f"Siz: {matn}") # javob
# update: yangi xabar (foydalanuvchi yozdi) Xabar qabul va javob: update (yangi hodisa — foydalanuvchi xabar yubordi), update.message.text (xabar matni), reply_text(javob) (javob yuborish). Bot handler (ishlovchi) — xabar kelganda chaqiriladi. Bu botning asosiy siklli: xabar kel → qayta ishla → javob ber. Har xabar — update. Bot — xabarlarga javob beruvchi (chatbot). Qabul-javob — bot yuragi.
2.4. Buyruqlar (/start, /help)
Maxsus buyruqlar:
# /start — botni boshlash
async def start(update, context):
await update.message.reply_text("Salom! Botga xush kelibsiz")
# /help, /narx, /buyurtma — bot amallari
# buyruq: / bilan boshlanadi Buyruqlar — / bilan boshlanadigan maxsus xabarlar: /start (botni boshlash — birinchi xabar, tanishtirish), /help (yordam), maxsus (/narx, /buyurtma). Har buyruq alohida handler (funksiya). Bu botning menyusi (foydalanuvchi nima qila oladi). BotFather'da buyruqlarni ro'yxatlash mumkin (foydalanuvchiga ko'rinadi). Buyruqlar — bot amallari (tuzilgan o'zaro ta'sir). /start — har botda birinchi.
2.5. Tugmalar (inline keyboard)
Bosiladigan tugmalar:
keyboard = {
"inline_keyboard": [[
{"text": "Ha", "callback_data": "yes"},
{"text": "Yo'q", "callback_data": "no"},
]]
}
# tugma bosilganda callback (yes/no) keladi Tugmalar (inline keyboard) — xabar ostidagi bosiladigan tugmalar: {"text": "Ha", "callback_data": "yes"}. Foydalanuvchi bossa — callback (yes/no) botga keladi (yozmasdan tanlash). Bu qulay o'zaro ta'sir (menyu, tanlov, tasdiqlash — yozish o'rniga bosish). Reply keyboard (klaviatura ustida) va inline (xabar ostida). Tugmalar — foydalanuvchi tajribasini yaxshilaydi (oson tanlov). Bosish — yozishdan qulay.
2.6. Holat (suhbat konteksti)
Ko'p bosqichli suhbat:
# holat: foydalanuvchi qaysi bosqichda
# masalan buyurtma: mahsulot → miqdor → manzil
context.user_data["bosqich"] = "mahsulot"
# keyingi xabar — mahsulot javobi Holat (state) — ko'p bosqichli suhbat konteksti: bot foydalanuvchi qaysi bosqichda ekanini eslaydi (buyurtma: mahsulot → miqdor → manzil). context.user_data (foydalanuvchi holati). Sabab: suhbat — bir necha xabar (savol-javob), bot kontekstni saqlashi kerak (oldingi javob). Bu 20.6 (holat) ga o'xshaydi. Holatsiz bot — har xabar mustaqil (oddiy); holat bilan — suhbat (murakkab). Holat — kontekstli suhbat.
2.7. Bot arxitekturasi (polling/webhook)
Bot xabarlarni qanday oladi:
| Usul | Tafsilot |
|---|---|
| Polling | Bot Telegram'dan so'raydi (oddiy) |
| Webhook | Telegram bot'ga yuboradi (tez, server) |
Bot xabarlarni ikki usulda oladi: Polling (bot Telegram'dan doimiy "yangi xabar bormi?" so'raydi — oddiy, sinash uchun), Webhook (Telegram bot serveriga xabar yuboradi — tez, ishlab chiqarish, HTTPS server kerak). Polling — oson boshlash (server shart emas), webhook — samarali (ko'p foydalanuvchi). Kichik bot — polling, katta — webhook. Bu 20-qism (server) bilan bog'liq (webhook — FastAPI endpoint). Arxitektura — xabar olish usuli.
2.8. Bot — API integratsiya amaliyoti
Telegram bot — API integratsiya 26.7-bob ning amaliy misoli: token (auth — 26.7), so'rovlar (send_message), xato boshqarish 26.7-bob, rate limit (Telegram cheklovi). Bot ko'pincha boshqa API bilan integratsiyalanadi (ob-havo API, to'lov API, baza — 23-qism). Botda: xabar qabul → qayta ishla (baza, API) → javob. Bu barcha o'rganganni birlashtiradi: API 26.7-bob, baza (23), skript 26.1-bob. Bot — foydalanuvchiga yaqin avtomatlashtirish (Telegram — millionlab odam). "Odamlar yerda — xizmat yerda". Bot — amaliy va mashhur.
3. Tez ma'lumotnoma
# python-telegram-bot (v20+):
from telegram.ext import Application, CommandHandler, MessageHandler, filters
async def start(update, context):
await update.message.reply_text("Salom!")
async def echo(update, context):
await update.message.reply_text(f"Siz: {update.message.text}")
app = Application.builder().token("TOKEN").build()
app.add_handler(CommandHandler("start", start))
app.add_handler(MessageHandler(filters.TEXT, echo))
app.run_polling()
# tugmalar (inline):
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
keyboard = InlineKeyboardMarkup([[
InlineKeyboardButton("Ha", callback_data="yes"),
InlineKeyboardButton("Yo'q", callback_data="no"),
]])
# holat: context.user_data["bosqich"] = "..."
# token: BotFather → maxfiy (os.environ)Telegram bot xulosasi
Bot: avtomatik javob (Telegram) · token (BotFather — maxfiy) · update (xabar)
Buyruqlar (/start) · tugmalar (inline keyboard) · holat (suhbat)
Polling (oddiy) / webhook (server) · API integratsiya (26.7)4. Batafsil misollar
Misollarda deterministik mock bot (soxta — real bot token va Telegram serveri talab qiladi) bilan sinaladi. Namunalar bot mantigini ko'rsatadi.
Misol 1 — Buyruqlar va javob (mock)
"""mock bot: buyruqlar (/start, /narx), javob berish — bot mantigi."""
class MockBot:
def __init__(self, token: str) -> None:
self.token = token
self.handlers: dict = {}
def command(self, cmd: str):
def deco(fn):
self.handlers[cmd] = fn
return fn
return deco
def handle(self, xabar: dict) -> str:
matn = xabar.get("text", "")
if matn.startswith("/"):
cmd = matn.split()[0][1:]
h = self.handlers.get(cmd)
if h:
return h(xabar)
return self.handlers.get("_default", lambda x: "?")(xabar)
def main() -> None:
bot = MockBot("123:ABC")
@bot.command("start")
def start(x: dict) -> str:
return f"Salom, {x['user']}! Botga xush kelibsiz."
@bot.command("narx")
def narx(x: dict) -> str:
qismlar = x["text"].split()
mahsulot = qismlar[1] if len(qismlar) > 1 else "?"
return f"{mahsulot} narxi: 100"
bot.handlers["_default"] = lambda x: "Noma'lum buyruq. /start bosing."
print("=== 1. /start buyrug'i ===")
print(f" {bot.handle({'text': '/start', 'user': 'Ali'})}")
print("\n=== 2. /narx buyrug'i (argument bilan) ===")
print(f" {bot.handle({'text': '/narx Python', 'user': 'Ali'})}")
print("\n=== 3. Noma'lum xabar (default) ===")
print(f" {bot.handle({'text': 'salom', 'user': 'Ali'})}")
print("\n=== 4. Ro'yxatlangan buyruqlar ===")
buyruqlar = sorted(k for k in bot.handlers if not k.startswith("_"))
print(f" {buyruqlar}")
print(" ⭐ bot — buyruqlar (/start) va javob (handler)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. /start buyrug'i ===
Salom, Ali! Botga xush kelibsiz.
=== 2. /narx buyrug'i (argument bilan) ===
Python narxi: 100
=== 3. Noma'lum xabar (default) ===
Noma'lum buyruq. /start bosing.
=== 4. Ro'yxatlangan buyruqlar ===
['narx', 'start']
⭐ bot — buyruqlar (/start) va javob (handler)Nima ko'rsatdi: 2.1, 2.3, 2.4-bo'limlar.
Misol 2 — Tugmalar (inline keyboard)
"""inline keyboard: bosiladigan tugmalar (callback_data); tugma bosish mantigi."""
def make_keyboard(tugmalar: list) -> dict:
"""Inline keyboard tuzilmasi."""
return {
"inline_keyboard": [
[{"text": matn, "callback_data": data} for matn, data in tugmalar]
]
}
def handle_callback(callback_data: str) -> str:
javoblar = {
"yes": "Tasdiqlandi!",
"no": "Bekor qilindi.",
"kurs": "Kurslar ro'yxati...",
}
return javoblar.get(callback_data, "Noma'lum tanlov")
def main() -> None:
print("=== 1. Ha/Yo'q tugmalari ===")
kb = make_keyboard([("Ha", "yes"), ("Yo'q", "no")])
print(f" tugmalar soni: {len(kb['inline_keyboard'][0])}")
print(f" matnlar: {[b['text'] for b in kb['inline_keyboard'][0]]}")
print("\n=== 2. Tugma bosish (callback) ===")
print(f" 'Ha' bosildi → {handle_callback('yes')}")
print(f" 'Yo'q' bosildi → {handle_callback('no')}")
print("\n=== 3. Menyu tugmalari ===")
menyu = make_keyboard([("Kurslar", "kurs"), ("Narxlar", "narx")])
print(f" menyu: {[b['text'] for b in menyu['inline_keyboard'][0]]}")
print("\n=== 4. Nega tugmalar ===")
print(" yozish o'rniga bosish (qulay)")
print(" callback_data — bot qaysi tugma bosildi biladi")
print(" ⭐ inline keyboard — bosiladigan tanlov (qulay)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Ha/Yo'q tugmalari ===
tugmalar soni: 2
matnlar: ['Ha', "Yo'q"]
=== 2. Tugma bosish (callback) ===
'Ha' bosildi → Tasdiqlandi!
'Yo'q' bosildi → Bekor qilindi.
=== 3. Menyu tugmalari ===
menyu: ['Kurslar', 'Narxlar']
=== 4. Nega tugmalar ===
yozish o'rniga bosish (qulay)
callback_data — bot qaysi tugma bosildi biladi
⭐ inline keyboard — bosiladigan tanlov (qulay)Nima ko'rsatdi: 2.5-bo'lim.
Misol 3 — Holat (ko'p bosqichli suhbat)
"""holat: ko'p bosqichli suhbat (buyurtma: mahsulot → miqdor → tasdiq)."""
class BuyurtmaBot:
def __init__(self) -> None:
self.holat: dict = {} # foydalanuvchi → bosqich
self.buyurtma: dict = {} # foydalanuvchi → ma'lumot
def handle(self, user: str, xabar: str) -> str:
bosqich = self.holat.get(user, "boshlangich")
if xabar == "/buyurtma":
self.holat[user] = "mahsulot"
self.buyurtma[user] = {}
return "Qaysi mahsulot?"
if bosqich == "mahsulot":
self.buyurtma[user]["mahsulot"] = xabar
self.holat[user] = "miqdor"
return f"{xabar} tanlandi. Necha dona?"
if bosqich == "miqdor":
self.buyurtma[user]["miqdor"] = xabar
self.holat[user] = "tasdiq"
b = self.buyurtma[user]
return f"Buyurtma: {b['mahsulot']} x {b['miqdor']}. Tasdiqlaysizmi? (ha/yo'q)"
return "/buyurtma bosing"
def main() -> None:
bot = BuyurtmaBot()
print("=== 1. Buyurtma boshlash ===")
print(f" {bot.handle('Ali', '/buyurtma')}")
print("\n=== 2. Mahsulot tanlash ===")
print(f" {bot.handle('Ali', 'Python kursi')}")
print("\n=== 3. Miqdor ===")
print(f" {bot.handle('Ali', '2')}")
print("\n=== 4. Holat kuzatiladi ===")
print(f" Ali holati: {bot.holat['Ali']}")
print(f" Ali buyurtmasi: {bot.buyurtma['Ali']}")
print(" ⭐ holat — ko'p bosqichli suhbat (kontekst)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Buyurtma boshlash ===
Qaysi mahsulot?
=== 2. Mahsulot tanlash ===
Python kursi tanlandi. Necha dona?
=== 3. Miqdor ===
Buyurtma: Python kursi x 2. Tasdiqlaysizmi? (ha/yo'q)
=== 4. Holat kuzatiladi ===
Ali holati: tasdiq
Ali buyurtmasi: {'mahsulot': 'Python kursi', 'miqdor': '2'}
⭐ holat — ko'p bosqichli suhbat (kontekst)Nima ko'rsatdi: 2.6-bo'lim.
Misol 4 — Amaliy: bot API integratsiya bilan (mock)
Real bot: buyruq → boshqa API/baza → javob. Bu — bot va API integratsiyasining namunasi (mock bilan).
"""to'liq bot (mock): buyruq → API/baza so'rov → javob — bot integratsiyasi."""
class MockDatabase:
"""Soxta baza (23-qism)."""
def __init__(self) -> None:
self.kurslar = {"Python": 100, "Go": 120, "Rust": 150}
def get_narx(self, nom: str) -> int:
return self.kurslar.get(nom, -1)
def barcha(self) -> list:
return list(self.kurslar.keys())
class ShopBot:
def __init__(self, db: MockDatabase) -> None:
self.db = db
def handle(self, xabar: str) -> str:
if xabar == "/start":
return "Do'kon boti! /kurslar yoki /narx <nom>"
if xabar == "/kurslar":
return f"Kurslar: {', '.join(self.db.barcha())}"
if xabar.startswith("/narx"):
qismlar = xabar.split()
if len(qismlar) < 2:
return "Nom kiriting: /narx Python"
narx = self.db.get_narx(qismlar[1])
return f"{qismlar[1]}: {narx}" if narx > 0 else "Topilmadi"
return "Noma'lum buyruq"
def main() -> None:
bot = ShopBot(MockDatabase())
print("=== 1. /start ===")
print(f" {bot.handle('/start')}")
print("\n=== 2. /kurslar (bazadan) ===")
print(f" {bot.handle('/kurslar')}")
print("\n=== 3. /narx (bazadan) ===")
print(f" {bot.handle('/narx Python')}")
print(f" {bot.handle('/narx Java')}")
print("\n=== 4. Bot + baza integratsiya ===")
print(" buyruq → baza so'rov → javob")
print(" bot boshqa xizmat bilan (API, baza — 23-qism)")
print(" ⭐ bot — foydalanuvchi + baza/API (integratsiya)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. /start ===
Do'kon boti! /kurslar yoki /narx <nom>
=== 2. /kurslar (bazadan) ===
Kurslar: Python, Go, Rust
=== 3. /narx (bazadan) ===
Python: 100
Topilmadi
=== 4. Bot + baza integratsiya ===
buyruq → baza so'rov → javob
bot boshqa xizmat bilan (API, baza — 23-qism)
⭐ bot — foydalanuvchi + baza/API (integratsiya)Nima ko'rsatdi: 2.1–2.8-bo'limlar.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "Bot murakkab" | API integratsiya (26.7) |
| "Token kodga" | Maxfiy (25.10) |
| "Bot faqat javob" | Buyruq, tugma, holat |
| "Holatsiz suhbat" | Holat (ko'p bosqich) |
| "Tugma keraksiz" | Qulay (yozish emas) |
| "Polling = webhook" | Polling oddiy, webhook tez |
| "Bot yolg'iz" | Boshqa API/baza bilan |
| "Bot bir marta" | 24/7 server |
6. Keng tarqalgan xatolar va yechimlari
1. Token kodga
token = "123:ABC..." # ⚠️ (git)
token = os.environ["BOT_TOKEN"] # ✅2. /start yo'q
# faqat maxsus buyruq # ⚠️ (yangi user?)
CommandHandler("start", start) # ✅ tanishtirish3. Xato boshqarilmagan
narx = db.get(nom) # topilmasa crash # ⚠️
if narx: ... else: "topilmadi" # ✅4. Holatni saqlamaslik (suhbat)
# har xabar mustaqil # ⚠️ (ko'p bosqich yo'q)
context.user_data["bosqich"] = ... # ✅5. Rate limit (ko'p xabar)
# tez ko'p xabar (Telegram cheklov) # ⚠️
# sekin, guruhlab 26.6-bob # ✅6. Uzun ishni handler ichida
# handler'da sekin ish (bot bloklanadi) # ⚠️
# fon vazifa (async, navbat) # ✅7. Foydalanuvchi kirishini tekshirmaslik
narx = int(xabar) # matn bo'lsa crash # ⚠️
try: int(xabar) except: "raqam kiriting" # ✅7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 26.7-dars (o'tilgan): API — bot asosi
- 23-qism (o'tilgan): Baza — bot ma'lumoti
- 20-qism (o'tilgan): FastAPI — webhook
- 14-qism (o'tilgan): Async — bot (aiogram)
- 31-qism: Loyihalar — bot loyiha
8. Eng yaxshi amaliyotlar
Token maxfiy (muhit o'zgaruvchisi).
/start(tanishtirish) va/help.Tugmalar (qulay tanlov).
Holat (ko'p bosqichli suhbat).
Xato boshqar (kirish tekshir).
Rate limit (Telegram cheklov).
Uzun ish — fon vazifa (bot bloklanmasin).
Bot + baza/API (integratsiya).
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
1. # Telegram bot nima?
2. # token nima?
3. # BotFather nima?
4. # update nima?
5. # reply_text nima?
6. # buyruq nima?
7. # /start nima?
8. # inline keyboard nima?
9. # callback_data nima?
10. # holat nima?
11. # polling vs webhook?
12. # token qayerda?Javoblar
- Avtomatik javob beruvchi dastur
- Bot kaliti
- Botlarni boshqarish (yaratish)
- Yangi xabar (hodisa)
- Javob yuborish
/bilan maxsus xabar- Botni boshlash (tanishtirish)
- Bosiladigan tugmalar
- Tugma bosilganda keladi
- Suhbat konteksti (bosqich)
- Polling so'raydi, webhook yuboradi
- Muhit o'zgaruvchisi (kodga emas)
Vazifa 2: Xatolarni tuzating
1. token = "123:ABC" # os.environ
2. # faqat maxsus buyruq # /start
3. narx = db.get(nom) # topilmasa # tekshir
4. # har xabar mustaqil # holat
5. narx = int(xabar) # matn # try/exceptJavoblar
1. token = os.environ["BOT_TOKEN"]
2. CommandHandler("start", start)
3. if narx: ... else: "topilmadi"
4. context.user_data["bosqich"] = ...
5. try: int(xabar) except: "raqam"Vazifa 3: Buyruqlar
Bot:
/start/narx- Javob
- Default
Vazifa 4: Tugmalar
Inline:
inline_keyboardcallback_data- Bosish
- Menyu
Vazifa 5: Holat
Suhbat:
- Bosqich
user_data- Ko'p bosqich
- Kontekst
Vazifa 6: Integratsiya
Bot:
- Buyruq
- Baza/API
- Javob
- Xato
Vazifa 7: O'ylash
Telegram bot — API integratsiya 26.7-bob ning amaliy misoli va foydalanuvchiga eng yaqin avtomatlashtirish (odamlar Telegramda — millionlab). Nima uchun "foydalanuvchi yerda xizmat qurish" foydali, va nega bot barcha o'rganilgan bilimni (API, baza, skript, async) birlashtiradi — chat interfeysi nega avtomatlashtirish uchun kuchli platforma?
Javob
Qisqa javob: "Foydalanuvchi yerda xizmat qurish" foydali, chunki: odamlar allaqachon Telegramda (millionlab — o'rnatilgan ilova, tanish interfeys) — yangi ilova o'rnatish, o'rganish kerak emas. Bot — mavjud platformada xizmat (past to'siq — foydalanuvchi darrov ishlatadi). Bot barcha bilimni birlashtiradi: API (26.7 — Telegram va boshqa xizmat), baza (23 — ma'lumot saqlash), skript (26.1 — mantiq), async (14 — ko'p foydalanuvchi), xato boshqarish (09). Chat interfeysi avtomatlashtirish uchun kuchli, chunki: tabiiy (odamlar chat qiladi — tanish), oddiy (matn, tugma — murakkab UI kerak emas), hamma joyda (telefon, kompyuter), tez (bot 24/7 javob). Chatbot — inson va dastur orasidagi tabiiy ko'prik (til bilan). "Odamlar qayerda — xizmat o'sha yerda" — foydalanuvchiga yaqin (yangi joy emas). Bot — avtomatlashtirishni odamlarga yetkazish.
1. Foydalanuvchi yerda
Odamlar Telegramda (millionlab, o'rnatilgan). Bot — mavjud joyda xizmat (yangi ilova emas). Past to'siq (darrov ishlatadi).
2. Barcha bilimni birlashtiradi
| Bilim | Bot'da |
|---|---|
| API (26.7) | Telegram + boshqa xizmat |
| Baza (23) | Ma'lumot saqlash |
| Skript (26.1) | Mantiq |
| Async (14) | Ko'p foydalanuvchi |
3. Chat interfeysi kuchli
- Tabiiy: odamlar chat qiladi (tanish)
- Oddiy: matn, tugma (murakkab UI yo'q)
- Hamma joyda: telefon, kompyuter
- Tez: 24/7 javob
4. Inson-dastur ko'prigi
Chatbot — til bilan aloqa (tabiiy). Murakkab UI o'rniga suhbat. Foydalanuvchiga oson.
5. Muhandislik saboqlari
- Foydalanuvchi yerda xizmat (past to'siq)
- Bot barcha bilimni birlashtiradi
- Chat interfeysi tabiiy, kuchli
- Odamlarga yaqin avtomatlashtirish
6. Xulosa
- Bot — foydalanuvchiga yaqin (Telegram)
- Barcha bilim (API, baza, skript)
- Chat interfeysi — tabiiy, oddiy
- Avtomatlashtirishni odamlarga yetkazish
Nimani mustahkamlaydi: 2.1–2.8-bo'limlar.
Xulosa
Bu darsda Telegram bot yaratishni o'rgandik.
Eng muhim uch fikr:
Bot, token, xabar. Telegram bot — Telegram'da avtomatik javob beruvchi dastur (Python): foydalanuvchi xabar → bot qabul → qayta ishla → javob. Token — bot kaliti (@BotFather
/newbotbilan —123456:ABC...); maxfiy (25.10 kabi — kodga yozMANG, muhit o'zgaruvchisi). Xabar qabul va javob: update (yangi hodisa — foydalanuvchi yozdi),update.message.text(matn),reply_text(javob). Bot handler — xabar kelganda chaqiriladi (qabul → qayta ishla → javob).Buyruqlar, tugmalar, holat. Buyruqlar —
/bilan:/start(botni boshlash — tanishtirish),/help, maxsus (/narx) — har biri handler (bot menyusi). Tugmalar (inline keyboard) — xabar ostidagi bosiladigan ({"text": "Ha", "callback_data": "yes"}); bossa callback botga keladi (yozmasdan tanlov — qulay). Holat (state) — ko'p bosqichli suhbat konteksti (context.user_data— buyurtma: mahsulot → miqdor → manzil); bot foydalanuvchi qaysi bosqichda ekanini eslaydi (holatsiz — mustaqil xabar, holat bilan — suhbat).Arxitektura va integratsiya. Bot xabar olish: polling (bot Telegram'dan so'raydi — oddiy, sinash), webhook (Telegram bot serveriga yuboradi — tez, ishlab chiqarish, HTTPS server). Telegram bot — API integratsiya 26.7-bob ning amaliy misoli (token=auth, so'rovlar, xato, rate limit) va foydalanuvchiga eng yaqin avtomatlashtirish (odamlar Telegramda — past to'siq, tanish interfeys). Bot barcha bilimni birlashtiradi: API 26.7-bob, baza (23), skript 26.1-bob, async (14). Chat interfeysi kuchli (tabiiy, oddiy, hamma joyda, 24/7) — inson-dastur ko'prigi. "Odamlar qayerda — xizmat o'sha yerda". Python kutubxonalari:
python-telegram-bot,aiogram. Bot — avtomatlashtirishni odamlarga yetkazish.
Keyingi darsda rejalashtirilgan vazifalar (cron) ni o'rganamiz: skriptlarni avtomatik vaqtda ishga tushirish (har kuni, har soatda) — cron, scheduler bilan davriy avtomatlashtirish.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!