Как задеплоить бота на 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.