Хостинг Telegram-ботов

Пусть бот работает и после выключения ноутбука. Разместите Python-бота как постоянно работающее приложение, сохраните токен в переменной окружения и смотрите логи в Inquir Compute.

Обновлено: 2026-10-26

От исходников до работающего сервиса

Создайте бота через BotFather и добавьте BOT_TOKEN в переменные приложения. Для этого примера с polling нужна одна реплика. Оставьте сервис приватным: входящий HTTP-маршрут ему не требуется.

Как развернуть приложение

1

Подготовьте проект

Добавьте файлы примера или используйте свой проект. Установите зависимости и проверьте команду запуска локально перед деплоем.

2

Настройте приложение

Создайте приложение в своём воркспейсе. Укажите источник, команду запуска, переменные окружения и ресурсы. Для веб-сервиса настройте порт маршрута; polling-бота можно оставить приватным.

3

Проверьте релиз

Запустите деплой и проверьте логи сборки и приложения. Веб-маршруты проверьте по preview-адресу. Polling-боту отправьте /start в Telegram и убедитесь, что токен не используется другим процессом.

4

Опубликуйте и наблюдайте

Переведите проверенный веб-релиз в production. Выполняйте миграции БД отдельно от отката приложения. После обновления следите за ошибками и потреблением ресурсов.

Минимальный пример проекта

Примеры показывают код и запуск приложения, а не готовый шаблон инфраструктуры. Перед использованием в production проверьте и зафиксируйте версии зависимостей.

requirements.txt
aiogram>=3,<4
bot.py
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-реплики и базы данных тоже расходуют ресурсы; отсутствие запросов не означает бесплатное размещение.