Telegram Botlar Haqida Eng Ko'p Beriladigan 7 Savol
Muallif: Javohir Abdullayev · · Telegram botlar

O'zbekiston IT bozorida Telegram botlar eng ommabop yo'nalishlardan biri hisoblanadi. Kichik biznes xizmatlaridan tortib yirik davlat tizimlarigacha botlar orqali mijozlarga xizmat ko'rsatmoqda. Shu sababli, dasturlashni endi boshlagan yoki frilans loyihalar olayotgan yosh dasturchilarda doim bir xil murakkab savollar yuzaga keladi. Ushbu maqolada Telegram botlar yaratish jarayonida eng ko'p beriladigan 7 ta muhim savolga amaliy va texnik javoblarni jamladik.
1. Aiogram 3 yoki python-telegram-bot: Qaysi birini tanlagan ma'qul?
Python ekotizimida Telegram botlar uchun ikkita asosiy kutubxona yetakchilik qiladi: Aiogram va python-telegram-bot (PTB). Ko'pchilik dasturchilar aynan qaysi biridan boshlash kerakligi borasida ikkilanadi.
Agar siz asinxron dasturlash (asyncio) bilan ishlashni xohlasangiz, yuqori tezlik va katta yuklamalarga chidamli bot yaratmoqchi bo'lsangiz, Aiogram 3 eng yaxshi tanlovdir. Aiogram to'liq asinxron arxitekturaga qurilgan bo'lib, xabarlarni filtrlash, Middleware tizimi va FSM (Finite State Machine) holatlari bilan ishlashda juda qulay hisoblanadi. O'zbekistondagi aksariyat jamoalar ham aynan Aiogram kutubxonasidan foydalanadi.
Agar sizga qat'iy ob'ektga yo'naltirilgan arxitektura va rasmiy Telegram Bot API strukturasiga maksimal darajada yaqin yondashuv kerak bo'lsa, python-telegram-bot ajoyib muqobildir. Yangi loyihalar uchun biz zamonaviy va tezkor Aiogram 3 ni tanlashni tavsiya qilamiz.
2. Bot uchun bepul hosting yetarlimi yoki darhol VPS kerakmi?
Dasturchilar ko'pincha loyihaning boshlang'ich bosqichida xarajat qilmaslik uchun Render, Railway yoki PythonAnywhere kabi bepul hosting rejalaridan foydalanishga harakat qilishadi. Ammo bu yondashuv har doim ham to'g'ri kelmaydi.
Bepul platformalarda quyidagi jiddiy cheklovlar mavjud:
- Uxlab qolish (Sleep mode): Ma'lum vaqt so'rov kelmasa, bepul konteyner o'chadi. Foydalanuvchi botga yozganda bot 30-60 soniya kechikib javob beradi.
- Fayllar tizimi (Ephemeral storage): Server qayta yuklanganda SQLite bazangiz yoki yuklangan rasmlar butunlay o'chib ketishi mumkin.
- Trafik va xotira limiti: Bepul rejalarda RAM va CPU qat'iy cheklangan.
Shu sababli, agar botingiz portfolios yoki shunchaki sinov uchun bo'lsa, bepul xizmatlar yetarli. Ammo real mijozga topshiriladigan yoki tijoriy botlar uchun arzon bo'lsa ham (oyiga 4-5 dollar) shaxsiy Linux VPS olib, uni Docker orqali sozlash eng to'g'ri va ishonchli yo'ldir.
3. SQLite qachongacha yetadi va qachon PostgreSQL-ga o'tish lozim?
Boshlang'ich dasturchilar uchun SQLite juda qulay, chunki u alohida server yoki o'rnatishni talab qilmaydi — barcha ma'lumotlar bitta faylda saqlanadi. Biroq SQLite bir vaqtning o'zida bir nechta yozish (write) amallarini bajara olmaydi, ya'ni fayl darajasida qulflanadi (table/database lock).
Quyidagi hollarda zudlik bilan PostgreSQL yoki MySQL bazasiga o'tish zarur:
- Botdan bir vaqtda 50 tadan ortiq faol foydalanuvchi ma'lumot yozayotgan bo'lsa.
- Bot bir nechta jarayonlarda (multi-process yoki asinxron workerlar) ishlayotgan bo'lsa.
- Ma'lumotlar xavfsizligi va har kungi avtomatik backup (nusxalash) muhim bo'lsa.
Amaliyotda, hatto kichik loyiha bo'lsa ham, boshidanoq PostgreSQL va SQLAlchemy (yoki Tortoise ORM) kombinatsiyasidan foydalanish kelajakdagi migratsiya muammolarining oldini oladi.
4. Ommaviy xabar (rassilka) yuborishda bot bloklanishining oldini qanday olish mumkin?
Telegram Bot API rasmiy qoidalariga ko'ra, bitta bot bitta chatga sekundiga ko'pi bilan 1 ta xabar, umumiy foydalanuvchilarga esa sekundiga ko'pi bilan 30 ta xabar yuborishi mumkin. Ushbu limit buzilsa, Telegram sizga 429 Too Many Requests xatosini qaytaradi, bot esa vaqtinchalik yoki butunlay bloklanishi mumkin.
Ommaviy xabarlarni to'g'ri yuborish qoidalari:
- Oddiy
fortsikli orqali barcha bazadagi foydalanuvchilarga ketma-ket xabar yubormang. - Xabarlar o'rtasida kamida 0.05 soniyalik kichik kechikish (sleep) qo'ying yoki xabarlar oqimini sekundiga 25-28 tagacha cheklang.
- Orqa fonda ishlovchi navbat tizimlaridan foydalaning (masalan, Celery, Redis yoki ARQ).
- Foydalanuvchi botni bloklagan bo'lsa (
BotBlockedxatosi), uni darhol bazangizda nofaol qilib belgilang, toki bot unga qayta-qayta xabar yuborib vaqt yo'qotmasin.
5. Botga Click va Payme to'lov tizimlari qanday integratsiya qilinadi?
O'zbekistonda bot orqali savdo qilishda Click va Payme integratsiyasi juda muhim. Bu jarayon ikki xil usulda amalga oshiriladi:
1. Telegram Payments API orqali: BotFather orqali to'lov provayderi (Click yoki Payme) tanlanadi va do'kon hisobi ulanadi. Bot sendInvoice metodi orqali hisob-faktura yuboradi. Foydalanuvchi to'lovni bevosita Telegram interfeysi ichida tasdiqlaydi. Bu usul eng qulay va professional ko'rinishga ega.
2. Webhook va Redirect orqali: Bot foydalanuvchiga Click yoki Payme ilovasiga o'tuvchi maxsus to'lov havolasini (URL) beradi. To'lov amalga oshirilgach, to'lov tizimi sizning backend serveringizga webhook orqali xabar beradi va bot xaridorni tasdiqlaydi.
Kichik va o'rta loyihalar uchun Telegram Payments (BotFather orqali) usulidan foydalanish dasturchiga o'nlab soatlik ortiqcha ishlarni tejaydi.
6. Nega media fayllarni har doim file_id orqali yuborish zarur?
Ko'pchilik dasturchilar har safar xabar yuborilganda serverdagi rasm yoki videoni diskdan o'qib, qayta yuklaydilar (upload). Bu quyidagi jiddiy muammolarni keltirib chiqaradi:
- Server internet trafigi va CPU resursi behuda sarflanadi.
- Xabar foydalanuvchiga yetib borishi 2-4 barobar sekinlashadi.
Telegram serveriga biron fayl bir marta yuklangach, javobda uning unikal file_id kodi qaytadi. Ushbu kodni ma'lumotlar bazasida saqlab oling va keyingi barcha foydalanuvchilarga faylning o'zini emas, aynan shu file_id qiymatini yuboring. Shunda Telegram o'z keshidan faylni zumda yetkazib beradi.
# Noto'g'ri usul: har safar faylni qayta yuklash
# photo = FSInputFile("product.jpg")
# To'g'ri usul: Telegram file_id orqali bir zumda yuborish
PHOTO_ID = "AgACAgIAAxkBAAI..."
await message.answer_photo(photo=PHOTO_ID, caption="Mahsulot haqida")7. Bot tokeni xavfsizligini ta'minlash uchun qanday qoidalarga rioya qilish kerak?
Telegram bot tokeni bu sizning botingiz ustidan to'liq nazorat kalitidir. Agar token begona qo'lga tushsa, buzg'unchi foydalanuvchilar ma'lumotlarini o'g'irlashi yoki barcha foydalanuvchilarga nojo'ya xabarlar tarqatishi mumkin.
Asosiy xavfsizlik choralari:
- Hech qachon tokenni kod ichida to'g'ridan-to'g'ri (hardcode) yozmang.
- Har doim muhit o'zgaruvchilaridan (
.envfayl vapython-decoupleyokipydantic-settings) foydalaning. - Git repozitoriyasiga kodni yuklashdan oldin
.gitignorefayliga.envyozilganini tekshiring. - Agar token tasodifan GitHub-ga tushib qolsa, zudlik bilan BotFather orqali
/revokebuyrug'ini bering va yangi token oling.
Xulosa
Sifatli Telegram bot yaratish faqatgina xabarlarga javob qaytarishdan iborat emas. Bu to'g'ri arxitektura tanlash, ma'lumotlar bazasini optimallashtirish, xavfsizlik va barqaror hosting sozlamalarining uyg'unligidir. Yuqoridagi 7 ta savol va ularning tavsiyalariga amal qilsangiz, loyihangiz minglab foydalanuvchilar oqimida ham barqaror va tezkor ishlaydi.
Teglar: #telegram bot #aiogram #python #backend #hosting