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 с паузой.
Связанные термины
Готовы запустить GPU-задачу?
Запустить GPU-сервер