Запрос «n8n телеграм бот» почти всегда скрывает одну и ту же задачу: нужен собеседник в мессенджере, который отвечает людям сам, круглосуточно и без написанного вручную кода. В n8n такая связка действительно собирается мышью — из готовых блоков-нод, которые перетаскиваются на холст и соединяются линиями. Ниже разобран весь путь: команда в @BotFather, три ноды основной цепочки, память, характер, расшифровка голосовых, статус «печатает» и то, что мешает боту работать постоянно. Материал опирается на документацию n8n и на два русскоязычных видеоразбора, где авторы собирают бота прямо в кадре — вместе со всеми поломками, которые случаются по дороге.
Как устроен телеграм-бот в n8n
Основная цепочка короткая — три звена.
На входе стоит Telegram Trigger в режиме on message. Это спусковой крючок: человек отправил боту сообщение, и сценарий в ту же секунду запускается, забирая текст и служебные данные о собеседнике. Автор разбора описывает его роль просто — как только кто-то пишет боту, тот сразу включается и передаёт запрос дальше, искусственному интеллекту.
В середине — нода AI Agent из раздела Advanced AI. Она принимает сообщение, обращается к языковой модели и возвращает готовый ответ. Сама по себе нода пустая: к ней снизу подключаются подноды — модель, которая думает, и память, которая хранит переписку. Роль и манеру общения задаёт параметр System Message внутри самой ноды. Устройство агента и установку платформы этот текст не пересказывает, они разобраны отдельно.
На выходе — снова нода Telegram, но уже с действием Send Text Message. Она берёт ответ агента и кладёт его в переписку.
Именно так выглядит n8n чат бот в минимальном виде: три ноды в ряд плюс две подноды под агентом. Дальше эта заготовка обрастает деталями. Такой бот отвечает текстом; после отдельной доработки понимает голосовые сообщения; при подключении инструментов умеет не только разговаривать, но и действовать — искать в интернете, писать в таблицу, обращаться к чужому сервису. Инструменты подключаются к агенту отдельными поднодами, и решение о вызове принимает сама модель.
Шаг 1. Создаём бота и получаем токен
Начинать нужно не в n8n, а в самом мессенджере. Ботов в Telegram выдаёт служебный бот @BotFather: в диалоге с ним отправляется команда /newbot, после чего он спрашивает отображаемое имя будущего бота и его адрес. У адреса есть жёсткое требование, о котором новички спотыкаются чаще всего: он обязан оканчиваться словом «bot».
В конце должно быть слово бот обязательно, либо после чёрточки, либо слитно… Мы получили наш API-ключ, вот этот вот как раз-таки токен. Берём этот ключ, переходим вот сюда и вставляем наш токен, и нажимаем Save. Видим, что у нас зелёная галочка, всё загорелось зелёным. Мы только что подключили Telegram.
— канал «ИИздец», сборка ИИ-ассистента без кода
Ответом BotFather присылает длинную строку — это и есть токен доступа. Связка n8n Telegram держится целиком на нём: в документации у Telegram-credential указан ровно один вид авторизации — токен бота, выданный BotFather. Внутри n8n открывается создание учётных данных Telegram, строка вставляется в единственное поле, credential сохраняется. Если всё введено верно, интерфейс подтверждает соединение отметкой — ровно то, что показывает автор ролика.
Один и тот же credential потом используют обе телеграмные ноды — и триггер на входе, и отправку на выходе. Заводить его дважды не нужно.
Шаг 2. Собираем цепочку
Порядок сборки такой же, как порядок движения данных.
Сначала на пустой холст добавляется триггер: в поиске нод набирается Telegram, выбирается Telegram Trigger и в нём — событие on message. В настройках указывается созданный credential. После этого триггер уже готов принимать сообщения.
Дальше нажимается плюс справа от триггера, открывается раздел Advanced AI и добавляется AI Agent. Автор второго разбора описывает эту последовательность буквально по шагам: сначала создаётся телеграмный триггер, потом он должен передать запрос искусственному интеллекту, а на конце обязательно нужен выход — то есть ответ, который вернётся человеку. Выходом становится третья нода: Telegram с действием Send Text Message.
В ноде отправки заполняется идентификатор чата. Брать его нужно не руками, а из данных, которые пришли вместе с сообщением: в каждом входящем событии есть номер диалога, откуда пришёл вопрос. Он подставляется в поле выражением — тогда ответ уходит именно тому человеку, который написал, а не в один заранее вписанный чат. Это принципиально: как только к боту подключается второй собеседник, жёстко вписанный номер начнёт отправлять чужие ответы одному и тому же адресату.
Первый запуск на этом месте, как правило, заканчивается ошибкой — и это нормально. В ролике автор нажимает play, и сценарий останавливается: агент сообщает, что данных для обработки у него нет. Причина в двух незаполненных местах. Первое — пустой System Message: агенту не сказали, кто он и какие задачи решает. Второе — не указан вход. По умолчанию агент ждёт текст в определённом поле, а из телеграмного триггера сообщение приходит в другом. Лечится это внутри ноды AI Agent: источник запроса переключается на Define below, затем в поле промта подставляется значение из триггера — то самое, где лежит написанный человеком текст. После этого запуск проходит, и агент отвечает.
Шаг 3. Подключаем нейросеть
Под нодой AI Agent есть точка Chat Model — туда добавляется поднода выбранного провайдера, а внутри неё создаётся credential с API-ключом. Список провайдеров в n8n длинный, и самой ходовой остаётся поднода OpenAI Chat Model.
У неё есть особенность, полезная тем, кто не хочет заводить зарубежную карту. В credential OpenAI спрятано поле Base URL — адрес, куда нода отправляет запросы. Его можно переписать на любой совместимый шлюз. Для ключа сервиса GEN202 туда вписывается https://api.gen202.com/v1, а рядом, в подноде OpenAI Chat Model, обязательно выключается переключатель Use Responses API — иначе учётные данные проверятся успешно, а реальный запуск упадёт с ошибкой 404, потому что запрос уйдёт на маршрут, которого у совместимого шлюза нет. Что здесь происходит по шагам и какие есть запасные варианты подключения, подробно разобрано в материале о том, как создать ИИ-агента в n8n.
Новому аккаунту в GEN202 начисляется 50 кредитов (25 ₽) — этого запаса хватает, чтобы собрать бота и проверить его в диалоге до первого пополнения. Какие модели доступны по одному ключу, показано на странице API языковых моделей.
Шаг 4. Память и характер бота
Без памяти бот отвечает каждый раз с чистого листа: он не помнит ни имени собеседника, ни предыдущей реплики. Память подключается к агенту отдельной поднодой — Simple Memory, окном последних сообщений. Параметр там один: сколько реплик держать. В разборах авторы выставляют разные значения, единственно правильного числа не существует.
Зато существует прямое следствие, которое стоит понять до запуска:
Мы добавляем Memory нашему агенту. Для этого мы выбираем Simple Memory. Мы можем написать, какая память должна быть, то есть сколько сообщений он должен хранить. Но не забывайте: чем больше у него будет память, тем дороже будет его ответ.
— Игорь Зуевич, «Как создать ИИ-бота в Telegram без кода»
Объяснение простое. Окно памяти не лежит где-то на стороне модели — n8n каждый раз подклеивает сохранённые реплики к новому запросу. Модель перечитывает их заново при каждом ответе, и все они считаются входными токенами. Чем шире окно, тем длиннее становится каждый следующий запрос. Практический вывод: окно выставляют таким, чтобы диалог оставался связным, а не максимальным про запас.
Характер задаётся в System Message. Там описывается, кем бот является и какие задачи решает: тон, границы, что отвечать на вопросы вне темы. В третьем разборе системное сообщение начинается прямой формулировкой роли — ассистент, чья задача выбирать правильные инструменты, — и дальше перечисляет, чем именно пользоваться. Тот же приём работает и для телеграмного бота: чем конкретнее описана роль, тем меньше сюрпризов в ответах.
Голосовые сообщения
Текстовый бот, отправленный живым людям, ломается почти сразу — на первом же голосовом. В ролике это видно наглядно: автор наговаривает боту сообщение вместо того, чтобы напечатать, и сценарий встаёт. Агент не понимает голосовое, потому что вместо текста ему приходит вложение.
Развилка собирается так.
Сразу после триггера ставится нода Switch — разделитель, который смотрит на входящее сообщение и отправляет его в одну из двух веток. Текстовая ветка идёт к агенту напрямую, как раньше. Голосовая — по длинному пути.
В голосовой ветке первой стоит Get File: сообщение содержит не сам звук, а идентификатор файла, и файл нужно сначала забрать у Telegram. Дальше файл уходит на расшифровку — в разборе для этого используется Whisper, модель распознавания речи от OpenAI, названная автором одним из самых простых способов превратить голос в текст. За расшифровкой в схеме следует нода Edit Fields: обе ветки должны прийти к агенту в одинаковом виде, иначе он снова не найдёт текст там, где ищет. После этого голосовая ветка сходится с текстовой, и агент отвечает так же, как на печатное сообщение.
Здесь же поджидают третьи грабли из разбора, и они общие для любой переделки. Автор добавляет ноды, запускает — и сценарий снова останавливается на середине. Формулирует он это как правило: когда в цепочку вставляется дополнительная нода, следующая за ней, скорее всего, окажется сбита, и после каждой вставки нужно пройтись по предыдущим нодам и проверить их настройки. Место остановки смотрят в разделе Executions — там видно, на каком шаге всё встало и какие данные туда пришли.
Мелочи, которые делают бота живым
Две небольшие ноды заметно меняют ощущение от переписки.
Первая — Send Chat Action с действием typing. Это тот самый статус «печатает…» под именем собеседника. Ставится он между триггером и агентом: пока модель формулирует ответ, человек видит, что бот занят, а не молчит. Без него пауза выглядит как поломка, особенно если запрос сложный и ответ идёт не мгновенно.
Вторая — нода If с проверкой имени пользователя. Она отсекает посторонних: бот отвечает только тем, чьи username перечислены в условии, а всем остальным не отвечает вовсе. Полезно, пока бот в отладке и лишние собеседники только мешают, и полезно потом, если он задуман как личный помощник, а не как публичная линия поддержки.
Запуск на постоянку
Пока сценарий проверяется в редакторе, всё выглядит просто. Постоянная работа упирается в то, как Telegram доставляет сообщения.
Мессенджер не ждёт, когда его опросят, — он сам стучится по указанному адресу. Адрес обязан быть защищённым: при попытке поднять триггер без этого n8n отвечает ошибкой «An HTTPS URL must be provided for webhook». На домашнем компьютере такого адреса нет, и обойти это внутри интерфейса нельзя. По документации решение выглядит так: n8n переезжает на сервер с доменным именем, перед ним ставится обратный прокси с сертификатом TLS, а самому n8n внешний адрес сообщается переменной окружения N8N_WEBHOOK_URL. После этого триггер регистрируется и сообщения начинают приходить.
Второе ограничение вытекает из устройства самого Telegram: адрес доставки у бота может быть только один. Тестовый режим сценария и рабочий режим используют разные адреса и потому вытесняют друг друга — включили отладку, и боевой бот замолчал. Обходится это заведением второго бота у BotFather: боевой токен остаётся в рабочем сценарии, а отладка идёт на дубле, которого нет ни у кого из пользователей. Так же удобно проверять и обновления, не трогая тех, кто уже переписывается с ботом.
Сколько стоит такой бот
Расходов две статьи, и они не смешиваются.
Первая — платформа. Самостоятельно поднятый n8n не требует оплаты: это программа на вашем сервере, подписки у неё нет. Платить приходится за сервер, на котором она круглосуточно работает и принимает вебхуки, — и это единственная неустранимая часть, потому что без внешнего адреса телеграмный триггер не поднимется.
Вторая — обращения к модели. Здесь оплата идёт за токены: отдельно за то, что бот прочитал, отдельно за то, что написал. Порядок величин на самой доступной текстовой модели каталога GEN202 — от 18 ₽ за миллион входных токенов, цены остальных моделей собраны в каталоге. К этому добавляются две вещи из разделов выше. Память расширяет каждый запрос историей переписки, и чем шире окно, тем длиннее оплачиваемый вход. Голосовая ветка добавляет ещё одно обращение — к модели распознавания речи, и оно считается отдельно от ответа агента.
Частые вопросы
Можно ли обойтись без сервера? Для постоянной работы — нет: Telegram доставляет сообщения на адрес по HTTPS, а на локальной машине его взять неоткуда. Но собрать и отладить логику можно заранее прямо в редакторе: агент, модель, память и системное сообщение проверяются встроенным чат-триггером, и только на финальном шаге вход меняется на телеграмный.
Почему бот молчит? Проверять нужно по цепочке. Сначала Executions: если запусков нет вовсе, сообщение до n8n не дошло — значит, дело в вебхуке или в том, что сценарий выключен. Если запуск есть, но обрывается на середине, там же видно проблемную ноду и данные, которые в неё пришли. Отдельно стоит убедиться, что токен в credential принадлежит тому боту, которому вы пишете, и что отладочный режим не перехватил адрес доставки у рабочего сценария.
Можно ли настроить постинг в телеграм по расписанию? Механика та же, только зеркальная. Отправляющая нода Telegram остаётся, а на входе вместо телеграмного триггера ставится триггер по расписанию: он запускает сценарий сам, без входящего сообщения. Агент при этом либо остаётся в цепочке и готовит текст, либо убирается вовсе, если публиковать нужно заранее заготовленное.
Обязательно ли брать ключ у OpenAI? Нет. Подноды Chat Model в n8n есть у многих провайдеров, а поднода OpenAI дополнительно умеет ходить на другой адрес через поле Base URL — этим и пользуются те, кто подключает один ключ ко всему каталогу моделей и платит рублями.
Нужен ли программист? Чтобы собрать описанного бота — нет. Все шаги делаются мышью: ноды выбираются из списка, параметры заполняются в полях, идентификатор чата подставляется выражением из данных триггера. n8n боты начинают требовать кода позже — когда понадобится нестандартный инструмент, которого нет среди готовых нод, да и там чаще выручает обычный HTTP-запрос.