Хостинг Telegram-ботов
Пусть бот работает и после выключения ноутбука. Разместите Python-бота как постоянно работающее приложение, сохраните токен в переменной окружения и смотрите логи в Inquir Compute.
Обновлено: 2026-10-26
От исходников до работающего сервиса
Создайте бота через BotFather и добавьте BOT_TOKEN в переменные приложения. Для этого примера с polling нужна одна реплика. Оставьте сервис приватным: входящий HTTP-маршрут ему не требуется.
Как развернуть приложение
Подготовьте проект
Добавьте файлы примера или используйте свой проект. Установите зависимости и проверьте команду запуска локально перед деплоем.
Настройте приложение
Создайте приложение в своём воркспейсе. Укажите источник, команду запуска, переменные окружения и ресурсы. Для веб-сервиса настройте порт маршрута; polling-бота можно оставить приватным.
Проверьте релиз
Запустите деплой и проверьте логи сборки и приложения. Веб-маршруты проверьте по preview-адресу. Polling-боту отправьте /start в Telegram и убедитесь, что токен не используется другим процессом.
Опубликуйте и наблюдайте
Переведите проверенный веб-релиз в production. Выполняйте миграции БД отдельно от отката приложения. После обновления следите за ошибками и потреблением ресурсов.
Минимальный пример проекта
Примеры показывают код и запуск приложения, а не готовый шаблон инфраструктуры. Перед использованием в production проверьте и зафиксируйте версии зависимостей.
aiogram>=3,<4
import asyncio import os from aiogram import Bot, Dispatcher from aiogram.filters import CommandStart from aiogram.types import Message dp = Dispatcher() @dp.message(CommandStart()) async def start(message: Message): await message.answer("Hello from Inquir!") async def main(): async with Bot(token=os.environ["BOT_TOKEN"]) as bot: await dp.start_polling(bot) if __name__ == "__main__": asyncio.run(main())
python bot.py
Выберите polling или webhook
Polling забирает обновления из Telegram и требует постоянно работающего процесса. Webhook принимает обновления на публичный HTTPS-адрес. Не запускайте оба режима с одним токеном бота.
Храните токен вне Git
Читайте BOT_TOKEN из окружения. Не записывайте его в исходники, скриншоты и логи. Данные приложения храните в БД или постоянном томе, а не в файловой системе контейнера.
Частые вопросы
Почему Telegram сообщает о конфликте polling?
Другой процесс получает обновления с тем же токеном. Остановите локального бота перед запуском облачной копии. При обновлении polling-бота не допускайте одновременной работы старого и нового процессов: сначала остановите старый.
Нужен ли боту домен?
Для polling — нет. Для webhook и Mini App нужен публичный HTTPS-адрес. Интерфейс Mini App — отдельное веб-приложение; приведённый пример запускает только бота.
Можно ли хранить данные в SQLite?
Подключите постоянный том и разместите файл БД внутри пути монтирования. Для такой конфигурации используйте одну реплику приложения. Том сохраняет файлы при замене контейнера, но не заменяет проверенную процедуру резервного копирования.
Сколько стоит размещение?
Актуальные тарифы и доступные предложения оплаты смотрите в разделе «Тариф и оплата». Планируйте ресурсы приложения и его зависимостей в рамках общего пула. Preview-реплики и базы данных тоже расходуют ресурсы; отсутствие запросов не означает бесплатное размещение.