Botxona

Как задеплоить бота на python-telegram-bot (PTB) — хостинг на Botxona

python-telegram-bot (PTB) — одна из старейших и самых стабильных библиотек для Telegram-ботов на Python. Чтобы бот работал на Botxona, менять адрес API не нужно — Telegram-запросы автоматически проходят через прокси платформы.

Шаги

1. Создайте Application

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

BOT_TOKEN = os.getenv("BOT_TOKEN")

app = Application.builder().token(BOT_TOKEN).build()

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("Привет! Я работаю.")

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

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

Настраивать base_url/base_file_url не нужно — и обычные вызовы API, и скачивание файлов автоматически проходят через прокси.

2. Используйте DATA_DIR

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

Если вы используете persistence из PTB (например, PicklePersistence), укажите путь к файлу в этой папке:

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

3. requirements.txt

python-telegram-bot==21.6

Если одного основного пакета недостаточно (например, python-telegram-bot[job-queue]), укажите дополнительные компоненты в скобках вместе с версией.

4. .env.example и ZIP

Задокументируйте собственные настройки бота (например, ADMIN_IDS) в файле .env.example, затем заархивируйте папку (Подготовка ZIP) и загрузите в панель.

5. Проверка и тест

После загрузки изучите результат на этой странице, затем проверьте бота в Telegram во время 15-минутного бесплатного теста.

Работа с JobQueue

Если используется JobQueue из PTB (например, run_daily, run_repeating), Botxona определит это автоматически и переведёт бота в режим «всегда включён» — иначе запланированная задача не выполнится, пока бот спит. Подробнее: Сон и пробуждение.

Частые ошибки

  • telegram.error.InvalidToken — токен скопирован неверно или отозван в BotFather (Получение токена).
  • Бот не запускается, ошибка «Conflict» — к одному токену пытаются подключиться из двух мест; остановите бота в другом месте (например, на своём компьютере).

Быстрее с помощью ИИ

Вместо ручной правки существующего кода можно попросить ИИ адаптировать его автоматически через Библиотеку промптов.

Следующий шаг

Обзор панели управления и Как читать логи.