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: полный практический гид по автоматизации воркфлоуГид
- Установка n8n в Docker: self-hosted на своём сервереКак поднять n8n на своём сервере через Docker: docker compose, том для данных, ключ шифрования, HTTPS и вебхуки за реверс-прокси, переход на PostgreSQL и что бэкапить, чтобы не потерять доступы.
- Триггеры и вебхуки в n8n: как запускается воркфлоуВиды триггеров в n8n и работа с вебхуками: чем тестовый URL отличается от боевого, почему вебхук не приходит, ответ вызывающей стороне, расписание и таймзоны, защита публичного эндпоинта.
- Данные и выражения в n8n: элементы, $json и почему нода срабатывает много разКак устроены данные в n8n: массив элементов вместо объекта, выражения $json и $node, обращение к предыдущим нодам, работа с вложенным JSON, объединение и разбиение потоков и типичные ошибки с пустыми данными.
Сделаю под ключ
Соберу автоматизацию на n8n или кодом
Заявки, таблицы, CRM и Telegram связаны между собой, и никто больше не переносит данные руками.
от 300 $ · 3-7 дней
«Спасибо Павлу, поставленная задача выполнена. Всегда на связи, дал подробную инструкцию и руководство, буду обращаться, всем рекомендую.»