Web & API

Telegram-боты

Программы, которые общаются с пользователями внутри Telegram через Bot API: принимают сообщения и команды и отвечают на них.

Что такое Telegram-боты

Telegram-бот — обычная программа на вашем сервере, которая общается с пользователями внутри мессенджера. Для пользователя это собеседник в списке чатов; технически это код, который получает сообщения от Telegram и отвечает через Bot API — набор HTTP-методов на api.telegram.org.

Слово «бот» шире мессенджеров: так называют любую программу, которая автоматически выполняет действия вместо человека — поисковые роботы, торговые боты, чат-боты на сайте. В разговоре «бот» чаще всего означает именно чат-бота, а в рунете — бота в Telegram.

Что бот может делать

  • Отвечать на команды (/start, /status) и произвольный текст
  • Присылать уведомления: алерты мониторинга, новые заявки, статусы задач
  • Принимать и отдавать файлы, фото, документы, голосовые
  • Показывать кнопки — inline-клавиатуры и меню вместо ввода текста
  • Принимать оплату, работать в группах и каналах, запускать mini apps
  • Быть интерфейсом к LLM или внутренним системам компании

Главное ограничение: бот не пишет пользователю первым. Диалог начинает человек — командой /start или добавлением бота в группу.

Как создать бота

Регистрация идёт через служебного бота @BotFather: команда /newbot, имя, username, в ответ приходит токен вида 123456789:AAH.... Токен — пароль от бота, его держат в переменных окружения, а не в коде.

# Проверить токен
curl "https://api.telegram.org/bot$TOKEN/getMe"

# Отправить сообщение
curl "https://api.telegram.org/bot$TOKEN/sendMessage" \
  -d chat_id=123456789 \
  -d parse_mode=HTML \
  -d text="<b>Деплой прошёл</b>"

Bot API — это обычный REST-подобный API поверх HTTP, поэтому бота можно написать хоть на голом curl. На практике берут библиотеку: aiogram или python-telegram-bot для Python, telegraf для Node.js.

Long polling или webhook

Есть два способа получать сообщения — это главное архитектурное решение при запуске бота.

Long polling (getUpdates) Webhook (setWebhook)
Кто инициирует бот сам опрашивает Telegram Telegram шлёт запрос вам
Нужен белый IP и HTTPS нет да
Задержка небольшая, но опрос идёт постоянно минимальная
Где удобно разработка, бот за NAT, ноутбук production на VPS
# Переключить бота на webhook
curl "https://api.telegram.org/bot$TOKEN/setWebhook" \
  -d url="https://bot.example.com/tg/$SECRET_PATH"

# Вернуться к polling
curl "https://api.telegram.org/bot$TOKEN/deleteWebhook"

Для webhook нужен публичный адрес с валидным SSL-сертификатом — обычно Nginx терминирует TLS и проксирует на приложение. Секрет в пути URL или заголовок с секретным токеном отсекают посторонние запросы: адрес webhook знает только Telegram.

Где хостить бота

Боту почти не нужны ресурсы: уведомлялка живёт на самом дешёвом VPS рядом с сервисом, который она мониторит. Запускают чаще всего юнитом systemd или в Docker — чтобы процесс переживал перезагрузку.

Ресурсы нужны, только если бот — витрина для тяжёлой задачи: генерация картинок или ответы LLM. Тогда сам бот остаётся лёгким, а вычисления уходят на GPU-инстанс, и бот ходит к нему по API. Долгую работу выносят в очередь через брокер сообщений: Telegram ждёт ответа на webhook недолго, и держать его тяжёлым запросом нельзя.

У Bot API есть лимиты на частоту сообщений и размер файлов — при массовых рассылках отправку ставят в очередь и обрабатывают ответ 429 с паузой.

Связанные термины

  • API — общий принцип, на котором построен Bot API
  • Webhook — основной способ получать апдейты в production
  • VPS — типичное место, где живёт бот
  • LLM — частая начинка бота-ассистента
  • HTTP — протокол вызовов Bot API

Готовы запустить GPU-задачу?

Запустить GPU-сервер