Botxona

Как задеплоить бота на aiogram — хостинг для aiogram-бота на Botxona

aiogram — одна из самых популярных Python-библиотек для Telegram-ботов в Узбекистане благодаря асинхронной работе и понятному синтаксису. В этой инструкции показано, как правильно разместить бота, написанного на aiogram 3, на Botxona.

Нужна ли aiogram отдельная настройка?

Нет. Чтобы обеспечить аналитику и изоляцию, Botxona автоматически пропускает Telegram-запросы каждого бота через собственный прокси — настраивать в коде AiohttpSession, TelegramAPIServer или другой специальный адрес API не нужно. Достаточно обычного Bot(token).

Шаги

1. Создайте объект бота

Создайте объект бота в файле main.py:

import os
import asyncio
from aiogram import Bot, Dispatcher

BOT_TOKEN = os.getenv("BOT_TOKEN")

bot = Bot(token=BOT_TOKEN)
dp = Dispatcher()

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

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

Обратите внимание: токен не прописан в коде, а читается из переменной окружения BOT_TOKEN — этого требует первое правило. Адрес Telegram API остаётся по умолчанию — прокси подключается автоматически.

2. Направьте данные в DATA_DIR

Если ваш бот хранит данные в SQLite или другом файловом хранилище:

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

Для aiosqlite или SQLAlchemy, которые часто используют вместе с aiogram, тоже укажите этот путь к файлу базы.

3. Напишите requirements.txt (с точными версиями)

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

Точные версии обязательны — если написать просто aiogram без версии, в отчёте проверки появится жёлтая отметка, а в будущем новая версия может оказаться несовместимой с вашим кодом.

4. Создайте .env.example

# Telegram ID администраторов, через запятую
ADMIN_IDS=

Не добавляйте в этот файл BOT_TOKEN, DATA_DIR — платформа передаёт их автоматически.

5. Упакуйте папку в ZIP и загрузите

Достаточно, чтобы main.py, requirements.txt и .env.example лежали в одной папке (botxona.yaml не обязателен — main.py определяется автоматически). Об архивации: Подготовка ZIP. Войдите в панель Botxona и загрузите архив через «Новый бот».

6. Пройдите проверку и тест

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

Запланированные задачи (APScheduler)

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

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

  • ModuleNotFoundError — библиотеки нет в requirements.txt или она указана неверно. Проверьте название и версию.
  • Бот не отвечает, но в логах нет ошибок — возможно, токен введён неверно, см. страницу Получение токена.
  • sqlite3.OperationalError: unable to open database file — папка DATA_DIR не создана; не забудьте добавить строку os.makedirs(DATA_DIR, exist_ok=True).

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

Если код большой, вместо ручной адаптации можно отдать ИИ (ChatGPT, Claude) промпт «Стандартизация» из Библиотеки промптов — он внесёт все перечисленные изменения за несколько секунд.

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

Когда бот запущен: Обзор панели управления, Как обеспечить работу бота 24/7.