Как задеплоить бота на 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» — к одному токену пытаются подключиться из двух мест; остановите бота в другом месте (например, на своём компьютере).
Быстрее с помощью ИИ
Вместо ручной правки существующего кода можно попросить ИИ адаптировать его автоматически через Библиотеку промптов.