Botxona

aiogram botni Botxonaga qanday joylash mumkin

aiogram — O'zbekistonda eng ko'p ishlatiladigan Python Telegram bot kutubxonalaridan biri, asinxron ishlashi va tushunarli sintaksisi tufayli. Bu qo'llanma aiogram 3'da yozilgan botni Botxonaga to'g'ri joylashni ko'rsatadi.

Nega aiogram alohida sozlash talab qiladi?

Botxona analitika va izolyatsiyani ta'minlash uchun har bir botni Telegram'ga to'g'ridan-to'g'ri emas, o'z proksisi orqali ulaydi. aiogram 3'da bu — AiohttpSession va TelegramAPIServer orqali bir necha qatorda sozlanadi.

Qadamlar

1. Session'ni TELEGRAM_API_URL bilan sozlang

main.py faylida bot obyektini yarating:

import os
import asyncio
from aiogram import Bot, Dispatcher
from aiogram.client.session.aiohttp import AiohttpSession
from aiogram.client.telegram import TelegramAPIServer

BOT_TOKEN = os.getenv("BOT_TOKEN")
API_URL = os.getenv("TELEGRAM_API_URL", "https://api.telegram.org")

session = AiohttpSession(api=TelegramAPIServer.from_base(API_URL))
bot = Bot(token=BOT_TOKEN, session=session)
dp = Dispatcher()

async def main():
    await dp.start_polling(bot)

if __name__ == "__main__":
    asyncio.run(main())

Diqqat qiling: token va API manzili kodga yozilmagan, muhit o'zgaruvchilaridan o'qilmoqda — bu birinchi va ikkinchi qoidalar talabi.

2. Ma'lumotlarni DATA_DIR'ga yo'naltiring

Agar botingiz SQLite yoki boshqa fayl asosidagi ma'lumot saqlasa:

DATA_DIR = os.getenv("DATA_DIR", "./data")
os.makedirs(DATA_DIR, exist_ok=True)
DB_PATH = os.path.join(DATA_DIR, "bot.sqlite3")

aiogram bilan ko'p ishlatiladigan aiosqlite yoki SQLAlchemy uchun ham baza faylini shu yo'lga ko'rsating.

3. requirements.txt yozing (aniq versiyalar bilan)

aiogram==3.13.1
aiosqlite==0.20.0
python-dotenv==1.0.1

Aniq versiya ko'rsatish shart — versiyasiz aiogram yozib qo'ysangiz, tekshiruv hisobotida sariq belgi chiqadi va kelajakda yangi versiya kod bilan mos kelmasligi mumkin.

4. .env.example yarating

# Adminlar Telegram ID'lari, vergul bilan
ADMIN_IDS=

BOT_TOKEN, TELEGRAM_API_URL, DATA_DIR ni bu faylga qo'shmang — ular platforma tomonidan avtomatik beriladi.

5. Papkani ZIP qiling va yuklang

main.py, requirements.txt, .env.example bir papkada bo'lishi kifoya (botxona.yaml shart emas — main.py avtomatik aniqlanadi). Arxivlash bo'yicha: ZIP tayyorlash. Botxona paneliga kirib "Yangi bot" orqali yuklang.

6. Tekshiruv va sinovdan o'ting

Yuklangach avtomatik tekshiruv o'tadi — natijani shu yerda tushunishingiz mumkin. Hammasi yashil/sariq bo'lsa, bot 15 daqiqalik bepul sinovda ishga tushadi — Telegram'da /start yuborib tekshiring.

Rejalashtirilgan vazifalar (APScheduler)

Kunlik hisobot yoki eslatma yuborish uchun APScheduler ishlatsangiz, Botxona buni avtomatik aniqlaydi va botingizni doim yoniq (always_on) qilib qo'yadi — aks holda uxlab yotgan paytda rejalashtirilgan vazifa o'tkazib yuborilishi mumkin edi. Batafsil: Uxlash va uyg'onish.

Tez-tez uchraydigan xatolar

  • ModuleNotFoundError — requirements.txtda kutubxona yo'q yoki noto'g'ri yozilgan. Nomi va versiyasini tekshiring.
  • Bot javob bermayapti, lekin loglarda xato yo'q — token noto'g'ri kiritilgan bo'lishi mumkin, Token olish sahifasiga qarang.
  • sqlite3.OperationalError: unable to open database file — DATA_DIR papkasi yaratilmagan; os.makedirs(DATA_DIR, exist_ok=True) qatorini qo'shishni unutmang.

AI yordamida tezroq

Kodingiz katta bo'lsa, uni qo'lda moslashtirish o'rniga Promptlar kutubxonasidagi "Standartlashtirish" promptini AI'ga (ChatGPT, Claude) berib, avtomatik moslashtirishingiz mumkin — u yuqoridagi barcha o'zgarishlarni bir necha soniyada bajaradi.

Keyingi qadam

Bot ishga tushgach: Boshqaruv paneli bo'yicha tur, Bot doim ishlashi uchun.