Перейти к содержимому
PD
n8n

Telegram-бот на n8n: от уведомлений до диалогового сценария

Как собрать телеграм-бота в n8n: подключение бота и вебхук, обработка команд и кнопок, состояние диалога, работа в группах и каналах, ограничения Telegram API и что учесть перед продакшеном.

Все статьи гида n8n · 18

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

Подключение

Токен получаете у BotFather, кладёте в креденшелы n8n. Точка входа - триггер Telegram: при активации воркфлоу n8n сам регистрирует адрес вебхука в Telegram, отдельно ничего настраивать не нужно.

Требование то же, что и для любых вебхуков: публичный HTTPS-адрес. На локальном n8n без домена бот работать не будет - Telegram просто некуда слать обновления. Как это поднять, разобрано в статье про установку.

Здесь же начинается классическая ошибка: собрали на тестовом URL, всё работало, закрыли редактор - бот замолчал. Боевой адрес живёт только у активированного воркфлоу.

Что приходит в воркфлоу

Telegram присылает не «текст сообщения», а объект обновления со всей обвязкой: кто написал, в каком чате, что именно, был ли это текст, фото, команда или нажатие кнопки.

Отсюда два практических следствия:

  • Проверяйте тип. Бот, который ожидает текст, а получил стикер, упадёт на обращении к несуществующему полю - это ровно та проблема с формой данных, что и везде.
  • chat.id - ваш главный идентификатор. Он нужен, чтобы ответить, и он же служит ключом состояния. Не путайте с id пользователя: в группе это разные вещи.

Команды и кнопки

Команды (/start, /help) - обычный текст, начинающийся со слэша, разбирается ветвлением. Зарегистрируйте список команд у BotFather: тогда пользователь увидит подсказку, а не будет угадывать.

Inline-кнопки удобнее команд почти всегда: меньше ошибок ввода и понятнее сценарий. Важная деталь - нажатие кнопки приходит другим типом обновления, чем сообщение. Воркфлоу должен уметь обрабатывать оба, и это первая вещь, которую забывают, когда бот внезапно «не реагирует на кнопки».

Второй нюанс: на нажатие кнопки Telegram ждёт подтверждения. Без него у пользователя останется крутящийся индикатор - мелочь, которая выглядит как поломка.

Состояние диалога

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

Для линейных сценариев (получил - ответил) это неважно. Как только появляется многошаговый диалог - «введите email», потом «введите название компании», - состояние нужно хранить снаружи, привязав к chat.id: в базе, в таблице или в памяти AI-агента, если сценарий диалоговый.

Про память агента отдельно: ключом сессии должен быть идентификатор чата. Если этого не сделать, все пользователи окажутся в одном общем контексте и будут видеть чужую переписку.

Группы и каналы

В группе бот по умолчанию видит не все сообщения, а только адресованные ему - это настройка приватности у BotFather. Если бот в группе «молчит», проверяйте её первой.

Для канала бот должен быть администратором. И помните разницу: постинг в канал - односторонняя история, диалога там нет.

Ограничения Telegram

Два лимита, о которые спотыкаются на росте:

Частота отправки. Массовая рассылка по списку упирается в лимиты, и Telegram начинает отвечать ошибкой. Поскольку нода выполняется по разу на элемент, рассылка на тысячу человек - это тысяча вызовов подряд. Нужны паузы между отправками и повторы с ожиданием при отказе.

Разметка сообщений. Если используете форматирование, спецсимволы в пользовательских данных ломают разметку, и Telegram отклоняет сообщение целиком. Либо экранируйте вставляемый текст, либо не форматируйте то, что пришло от пользователя.

Перед продакшеном

  • Ответьте на неожиданный ввод. Стикер, фото, пустое сообщение, команда, которой нет, - бот должен что-то сказать, а не молчать.
  • Долгие операции подтверждайте сразу. Если воркфлоу работает 20 секунд, отправьте «принято» сразу: молчащий бот выглядит сломанным.
  • Уведомляйте себя об ошибках. Error workflow обязателен: у бота отказ виден пользователю раньше, чем вам.
  • Проверьте на втором пользователе. Ошибки состояния и общей памяти проявляются только тогда, когда людей больше одного.

Вопросы и ответы

Как сделать телеграм-бота в n8n?

Получите токен у BotFather, добавьте его в креденшелы n8n, поставьте триггер Telegram как точку входа и активируйте воркфлоу - n8n сам зарегистрирует вебхук в Telegram. Дальше разбирайте входящее сообщение и отвечайте нодой отправки. Для боевого бота нужен публичный HTTPS-адрес.

Может ли бот на n8n вести диалог с памятью?

Да, но n8n не хранит состояние между запусками сам: каждое сообщение - отдельное выполнение. Состояние нужно держать снаружи, привязав его к chat id - в базе, таблице или, для AI-сценариев, в памяти агента с ключом сессии по идентификатору чата.

Ещё по теме

Сделаю под ключ

Соберу автоматизацию на n8n или кодом

Заявки, таблицы, CRM и Telegram связаны между собой, и никто больше не переносит данные руками.

от 300 $ · 3-7 дней

Похожий кейсАвтоматизация выдачи лицензий для BAS-скриптов на MakeСценарий в Make, который по одному сообщению в Telegram генерирует логин и пароль, выдаёт лицензию на срок, подключает FingerprintSwitcher Business и пишет строку в Google Sheets.

«Спасибо Павлу, поставленная задача выполнена. Всегда на связи, дал подробную инструкцию и руководство, буду обращаться, всем рекомендую.»

MarkBorisov · Kwork