Long polling без домена
Бот на aiogram с dp.start_polling запускается как фоновый воркер: постоянный процесс, публичный адрес не нужен и не выдаётся.
Бот на aiogram 3 готов и работает на ноутбуке, но при закрытии крышки умирает? Подключите репозиторий к Dada Cloud - платформа соберёт бота и запустит его как постоянный процесс. Long polling работает без домена, вебхук получает HTTPS-адрес. Бесплатный тариф, серверы в России.
Бот на aiogram с dp.start_polling запускается как фоновый воркер: постоянный процесс, публичный адрес не нужен и не выдаётся.
Если используете setup_application и aiohttp, приложение получает адрес с валидным сертификатом - его и передаёте в set_webhook.
Достаточно, чтобы aiogram был в зависимостях. Dockerfile писать не нужно, командная строка не нужна.
MemoryStorage теряет диалоги при каждом деплое. Подключите managed PostgreSQL или Redis рядом - и сценарии продолжатся с того же шага.
Необработанное исключение в хендлере или разрыв связи с Telegram - процесс перезапустится автоматически.
Данные пользователей бота хранятся на серверах в РФ - то, что требует закон о персональных данных.
Шесть шагов от локального скрипта до бота, который работает круглосуточно.
aiogram должен быть в requirements.txt - по этому файлу платформа поймёт, что проект на Python, и поставит зависимости при сборке.
Замените строку с токеном на чтение переменной окружения: os.environ["BOT_TOKEN"]. Локально удобно держать .env, но в репозиторий он попадать не должен.
Для long polling включите режим «фоновый воркер, бот без HTTP». Для вебхука создавайте обычное приложение - оно получит HTTPS-адрес.
Подключите GitHub - дальше каждый пуш в основную ветку будет собирать и выкатывать новую версию. Без git подойдёт zip-архив.
BOT_TOKEN, идентификаторы админов, ключи внешних API задаются в консоли и приходят в процесс при старте.
Создайте PostgreSQL рядом и переведите хранилище состояний с MemoryStorage на постоянное - тогда деплой не будет ронять пользователей в середине сценария.
Реальные тарифы платформы и честное сравнение с арендой своего VPS.
| Тариф | Цена | Что входит |
|---|---|---|
| Free | 0 ₽/мес | Один бот с базой, без привязки карты. Ограничение - по объёму ресурсов, а не по сроку. |
| Startup | 990 ₽/мес | 5 приложений, 2 базы данных, бэкапы 7 дней - бот, админка и фоновый воркер рассылок. |
| Business | 2 900 ₽/мес | 20 приложений, 10 баз данных, бэкапы 30 дней, приоритетная поддержка. |
| Свой VPS | сравнимо по железу | VPS дешевле по железу. Но systemd, бэкапы базы и перезапуск после падения - это ваше время. |
Три места, где деплой aiogram-бота обычно спотыкается.
Если локальная копия продолжает опрашивать Telegram, апдейты будут уходить то ей, то боевому боту. Остановите локальный процесс после деплоя или заведите отдельного тестового бота.
Состояния FSM в памяти процесса стираются при каждой новой сборке - пользователь застревает в середине сценария. Для боевого бота нужно постоянное хранилище.
Скачанные фото и документы, записанные на локальный диск, при новом деплое исчезнут. Храните их в объектном хранилище, а ссылки - в базе.
Long polling проще: dp.start_polling, публичный адрес не нужен, бот запускается в режиме фонового воркера. Вебхук быстрее реагирует и экономнее на больших нагрузках, но требует HTTPS-адреса и aiohttp-сервера в коде. Начинайте с polling, переходите на вебхук, когда упрётесь.
Подключите репозиторий, где aiogram есть в requirements.txt, включите режим фонового воркера, задайте BOT_TOKEN в переменных окружения - платформа соберёт и запустит бота. Обычно это занимает пару минут.
В переменных окружения приложения - они задаются в консоли. В репозиторий токен класть нельзя: Telegram отзывает засветившиеся токены.
Скорее всего используется MemoryStorage: состояния FSM живут в памяти процесса и стираются при перезапуске. Подключите PostgreSQL или Redis как хранилище - тогда сценарий продолжится с того же шага.
Нет, если aiogram-бот собирается по requirements.txt. Dockerfile пригодится, если нужна нестандартная системная зависимость - например ffmpeg для обработки голосовых.
Да, это два приложения с разными токенами. На бесплатном тарифе помещается одно, второе — на Startup. Один и тот же токен в двух процессах использовать нельзя: Telegram будет отдавать апдейты то одному, то другому.
Логи процесса видны в панели. Частые причины: упал на старте из-за неверного токена, конфликт getUpdates с локально запущенной копией, или необработанное исключение в хендлере.
Первого бота можно держать на бесплатном тарифе Free без привязки карты. Дальше - Startup 990 ₽/мес или Business 2 900 ₽/мес, оплата рублёвой картой.
Создайте аккаунт и разверните первое приложение. План Free — 0 ₽.