IlmHamroh
Python kursi/Avtomatlashtirish8/10-dars16 daqiqa
Mundarija (22)

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 xizmat

Telegram 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
# 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:

python
# /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:

python
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:

python
# 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
# 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)

python
"""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:

text
=== 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)

python
"""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:

text
=== 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)

python
"""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:

text
=== 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).

python
"""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:

text
=== 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

python
token = "123:ABC..."                       # ⚠️ (git)
token = os.environ["BOT_TOKEN"]            # ✅

2. /start yo'q

python
# faqat maxsus buyruq                       # ⚠️ (yangi user?)
CommandHandler("start", start)              # ✅ tanishtirish

3. Xato boshqarilmagan

python
narx = db.get(nom)   # topilmasa crash      # ⚠️
if narx: ... else: "topilmadi"              # ✅

4. Holatni saqlamaslik (suhbat)

python
# har xabar mustaqil                        # ⚠️ (ko'p bosqich yo'q)
context.user_data["bosqich"] = ...          # ✅

5. Rate limit (ko'p xabar)

python
# tez ko'p xabar (Telegram cheklov)         # ⚠️
# sekin, guruhlab 26.6-bob                     # ✅

6. Uzun ishni handler ichida

python
# handler'da sekin ish (bot bloklanadi)     # ⚠️
# fon vazifa (async, navbat)                 # ✅

7. Foydalanuvchi kirishini tekshirmaslik

python
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

  1. Token maxfiy (muhit o'zgaruvchisi).

  2. /start (tanishtirish) va /help.

  3. Tugmalar (qulay tanlov).

  4. Holat (ko'p bosqichli suhbat).

  5. Xato boshqar (kirish tekshir).

  6. Rate limit (Telegram cheklov).

  7. Uzun ish — fon vazifa (bot bloklanmasin).

  8. Bot + baza/API (integratsiya).


9. Amaliy topshiriq

Vazifa 1: Bashorat qiling

python
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
  1. Avtomatik javob beruvchi dastur
  2. Bot kaliti
  3. Botlarni boshqarish (yaratish)
  4. Yangi xabar (hodisa)
  5. Javob yuborish
  6. / bilan maxsus xabar
  7. Botni boshlash (tanishtirish)
  8. Bosiladigan tugmalar
  9. Tugma bosilganda keladi
  10. Suhbat konteksti (bosqich)
  11. Polling so'raydi, webhook yuboradi
  12. Muhit o'zgaruvchisi (kodga emas)

Vazifa 2: Xatolarni tuzating

python
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/except
Javoblar
python
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:

  1. /start
  2. /narx
  3. Javob
  4. Default

Vazifa 4: Tugmalar

Inline:

  1. inline_keyboard
  2. callback_data
  3. Bosish
  4. Menyu

Vazifa 5: Holat

Suhbat:

  1. Bosqich
  2. user_data
  3. Ko'p bosqich
  4. Kontekst

Vazifa 6: Integratsiya

Bot:

  1. Buyruq
  2. Baza/API
  3. Javob
  4. 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

  1. Foydalanuvchi yerda xizmat (past to'siq)
  2. Bot barcha bilimni birlashtiradi
  3. Chat interfeysi tabiiy, kuchli
  4. Odamlarga yaqin avtomatlashtirish

6. Xulosa

  1. Bot — foydalanuvchiga yaqin (Telegram)
  2. Barcha bilim (API, baza, skript)
  3. Chat interfeysi — tabiiy, oddiy
  4. Avtomatlashtirishni odamlarga yetkazish

Nimani mustahkamlaydi: 2.1–2.8-bo'limlar.


Xulosa

Bu darsda Telegram bot yaratishni o'rgandik.

Eng muhim uch fikr:

  1. Bot, token, xabar. Telegram bot — Telegram'da avtomatik javob beruvchi dastur (Python): foydalanuvchi xabar → bot qabul → qayta ishla → javob. Token — bot kaliti (@BotFather /newbot bilan — 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).

  2. 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).

  3. 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.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
26.8-dars: Telegram bot — IlmHamroh