Создаём Телеграм-бота бесплатно

Бот, который живёт на бесплатном хостинге и не падает: BotFather, вебхуки, деплой и то, что обычно ломается на второй день.

Телеграм-бот — самый быстрый способ довести идею до живых пользователей. Не нужен апстор, не нужен дизайн, не нужен домен. Ниже — путь от пустой папки до бота, который работает без вашего ноутбука и не стоит денег.

Что понадобится

Аккаунт в Телеграме, любой редактор кода и один бесплатный аккаунт на хостинге. Всё. Ни карты, ни домена, ни сервера в Германии.

Регистрируем бота у BotFather

Открываем @BotFather, отправляем /newbot, придумываем имя и username. В ответ приходит токен — длинная строка через двоеточие. Это пароль от бота: не кладите его в репозиторий, держите в переменных окружения.

Экран BotFather с полученным токеном

Первый обработчик

Минимальный бот — это функция, которая получает апдейт и отвечает текстом. Начните с одной команды /start: она проверяет, что токен верный, вебхук доехал и хостинг живой.

@dp.message(CommandStart())
async def start(message: Message):
    await message.answer("Привет. Я готов.")

Если этот шаг работает — дальше уже вопрос продуктовой логики, а не инфраструктуры.

Поллинг или вебхук

Поллинг проще: бот сам спрашивает сервер о новых сообщениях. Он идеален для локальной разработки и плохо живёт на бесплатных хостингах, которые засыпают. Вебхук наоборот: Телеграм сам стучится в ваш URL, процесс просыпается по запросу. Для бесплатного деплоя берите вебхук.

Деплой

  1. Кладём код в репозиторий.
  2. Подключаем репозиторий к хостингу, добавляем токен в переменные окружения.
  3. После первого успешного деплоя один раз вызываем setWebhook с публичным адресом сервиса.

Что ломается на второй день

Бесплатные инстансы засыпают — первый ответ после простоя приходит с задержкой в несколько секунд. Телеграм повторяет апдейт, если вы ответили не 200 — обработчик должен быть идемпотентным. И состояние: если хранить его в памяти процесса, оно исчезнет при следующем деплое. Даже маленькому боту нужна внешняя база.

Дальше

Когда бот стабильно отвечает, добавляйте по одной вещи за раз: клавиатуры, платежи, очередь задач. Каждая из них ломается по-своему, и разбираться в них по отдельности намного дешевле.