Botxona

python-telegram-bot (PTB) botni Botxonaga joylash

python-telegram-bot (PTB) — Python'dagi eng qadimgi va barqaror Telegram bot kutubxonalaridan biri. Botxonada ishlashi uchun API manzilini proksiga yo'naltirish kerak.

Qadamlar

1. Application'ni base_url bilan yarating

import os
from telegram.ext import Application, CommandHandler
from telegram import Update
from telegram.ext import ContextTypes

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

app = (
    Application.builder()
    .token(BOT_TOKEN)
    .base_url(f"{API_URL}/bot")
    .base_file_url(f"{API_URL}/file/bot")
    .build()
)

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("Salom! Men ishlayapman.")

app.add_handler(CommandHandler("start", start))

if __name__ == "__main__":
    app.run_polling()

Ikkita base_url/base_file_url ni ham to'g'ri sozlash muhim — birinchisi oddiy API chaqiruvlari, ikkinchisi fayl yuklab olish uchun.

2. DATA_DIR'dan foydalaning

DATA_DIR = os.getenv("DATA_DIR", "./data")
os.makedirs(DATA_DIR, exist_ok=True)

PTB'ning persistence (masalan PicklePersistence) ishlatsangiz, fayl yo'lini shu papkaga ko'rsating:

from telegram.ext import PicklePersistence
persistence = PicklePersistence(filepath=os.path.join(DATA_DIR, "bot_data.pickle"))

3. requirements.txt

python-telegram-bot==21.6

Faqat asosiy paket kifoya bo'lmasa (masalan python-telegram-bot[job-queue]), qavs ichidagi qo'shimchalarni ham versiyaga qo'shib yozing.

4. .env.example va ZIP

Botingiz o'zining sozlamalarini (masalan ADMIN_IDS) .env.example faylida hujjatlashtiring, so'ng papkani arxivlang (ZIP tayyorlash) va panelga yuklang.

5. Tekshiruv va sinov

Yuklangach natijani shu yerda o'qing, so'ng 15 daqiqalik bepul sinovda Telegram'da tekshiring.

JobQueue bilan ishlash

PTB'ning JobQueue (masalan run_daily, run_repeating) ishlatilsa, Botxona buni avtomatik aniqlab, botni doim yoniq holatga o'tkazadi — aks holda uxlab yotgan vaqtda rejalashtirilgan vazifa ishga tushmay qoladi. Batafsil: Uxlash va uyg'onish.

Tez-tez uchraydigan xatolar

  • telegram.error.InvalidToken — token noto'g'ri nusxalangan yoki BotFather'da bekor qilingan (Token olish).
  • Fayl (rasm, hujjat) yuklab olinmayapti — base_file_url unutilgan bo'lishi mumkin, yuqoridagi kodni tekshiring.
  • Bot ishga tushmayapti, "Conflict" xatosi — bir tokenga ikki joydan ulanish urinilmoqda; botni boshqa joyda (masalan kompyuteringizda) to'xtating.

AI yordamida tezroq

Mavjud kodingizni qo'lda o'zgartirish o'rniga, Promptlar kutubxonasi orqali AI'dan avtomatik moslashtirishni so'rashingiz mumkin.

Keyingi qadam

Boshqaruv paneli bo'yicha tur va Loglarni o'qish.