Telegram-бот с ИИ в n8n: сборка, память и первый ответ

Telegram-бот с ИИ в n8n: сборка, память и первый ответ

В n8n Telegram-бот собирается из трёх основных узлов: Telegram Trigger принимает сообщение, AI Agent готовит ответ, Telegram отправляет его в чат. Подключённые к агенту модель и память позволяют вести разговор. Вам понадобятся токен бота, ключ модели и n8n с публичным HTTPS-адресом. На компьютере без такого адреса или на сервере без доступа к Telegram эта схема не заработает.

Где поставить n8n, чтобы бот отвечал из России?

Для этой схемы надёжнее сервер в зарубежной локации, а доступ к Telegram стоит проверить до сборки. Если n8n ещё не установлен, сначала поставьте его на VPS с доменом и HTTPS. Telegram Trigger получает сообщения через вебхук: Telegram сам обращается к вашему n8n. Переключателя на polling, при котором бот забирает сообщения сам, у этого узла нет.

09.11.2026 при проверке с одного московского VPS соединение с Telegram Bot API зависало до таймаута. OpenAI, Anthropic и OpenRouter возвращали отказы 403. Это наблюдение с конкретного сервера, доступность вашей площадки нужно проверять отдельно. Зарубежные локации с оплатой в рублях есть и у российских провайдеров; при выборе сервера для бота учитывайте доступ к Telegram и модели.

Понадобится и входящий доступ к n8n: ответ Telegram на запрос с сервера ещё не доказывает, что Telegram сможет доставить сообщение обратно, поэтому проверьте публичный HTTPS-адрес в настройках. За обратным прокси публичный адрес задаёт N8N_WEBHOOK_URL, как описано в настройках адресов n8n. Старое имя WEBHOOK_URL пока работает, но уже устарело.

Представьте бота, который каждое утро сам готовит дайджест новостей и зачитывает его голосом. Такого ИИ-агента в Telegram показывают завтра в 12:00 МСК на бесплатном мастер-классе.

Записаться бесплатно

Как создать бота и получить первое сообщение в n8n?

Создайте бота у @BotFather, затем передайте его токен узлу Telegram Trigger. По инструкции n8n отправьте BotFather команду /newbot, укажите имя и username с окончанием bot. Сохраните выданный токен: он нужен и первому узлу, который принимает сообщения, и последнему, который отправляет ответ от имени того же бота.

Теперь откройте терминал на сервере, где работает n8n, и выполните команду, заменив <токен> целиком на токен BotFather. Кавычки вокруг адреса сохраните.

curl -s 'https://api.telegram.org/bot<токен>/getMe'

Ответ с данными бота подтверждает связь и токен; при 401 Unauthorized связь есть, но токен нужно проверить. Если запрос зависает, сначала разбирайтесь с доступом сервера к Telegram. Перестановка узлов в редакторе эту проблему не устранит.

  1. Создайте сценарий и добавьте Telegram Trigger. В его учётных данных Telegram API вставьте токен в Access Token; Base URL оставьте без изменений.
  2. Выберите событие Message, запустите тест триггера и напишите боту текст в личном чате. В результате должно появиться ваше сообщение.
  3. Для личного бота добавьте свой числовой идентификатор в Restrict to User IDs. Его можно взять из поля message.from.id полученного сообщения; затем повторите тест уже с ограничением.

Ограничение по отправителю поддерживает сам Telegram Trigger. В структуре сообщения Telegram отправитель находится в message.from, а чат в message.chat. Для следующих шагов оставьте название узла Telegram Trigger: выражения ниже ссылаются именно на него.

По теме: n8n и ИИ-агенты: собрать безопасный сценарий с нуля

Как подключить нейросеть, память и отправку ответа?

Соедините Telegram Trigger → AI Agent → Telegram, а модель и Simple Memory подключите к разъёмам модели и памяти AI Agent. Они дополняют агента и не вставляются в основную цепочку. Пока вы проверяете, как бот отвечает на вопрос и вспоминает прошлый разговор, отправляйте ему текстовые сообщения в личном чате, чтобы не смешивать эту проверку с обработкой файлов.

В AI Agent для Prompt выберите Define below и в Prompt (User Message) вставьте выражение {{ $json.message.text }}. Оно передаст агенту текст из Telegram. Автоматический вариант ожидает поле chatInput, поэтому здесь задаём текст явно, как позволяет настройка Prompt. В System Message можно написать: «Отвечайте по-русски, кратко, обычным текстом. Если вопрос непонятен, попросите уточнить».

Для примера подключите Anthropic Chat Model: сначала получите ключ Claude API, затем сохраните его в поле API Key учётных данных Anthropic. Выберите эти учётные данные в подузле и модель в поле Model. Вместо Anthropic можно подключить подузел другого провайдера, если его API доступен вашему серверу и у вас есть подходящий ключ.

В Simple Memory выберите Session ID → Define below, затем в поле Key задайте {{ $('Telegram Trigger').item.json.message.chat.id }}. В документации этот параметр описан как Session Key. Явная ссылка на триггер берёт номер нужного чата; одинаковый текстовый ключ для всех пользователей объединит их разговоры. Context Window Length задаёт, сколько прошлых обменов учитывать. В режиме очереди, queue mode, Simple Memory использовать нельзя.

Этот ключ разделяет память по чатам. В общей группе участники получат общую память, поэтому проверяйте личного бота в личной переписке.

В последнем узле Telegram выберите те же учётные данные бота, Resource → Message и Operation → Send Message. В Chat ID вставьте {{ $('Telegram Trigger').item.json.message.chat.id }}, в Text укажите {{ $json.output }}. Так ответ AI Agent вернётся в тот чат, откуда пришёл вопрос. Среди дополнительных полей отправки сообщения выключите Append n8n Attribution, чтобы убрать автоматическую приписку про n8n.

Самое интересное начинается, когда за ботом стоит агент. Завтра в 12:00 МСК на бесплатном мастер-классе ему дают задачу голосом, и он сам собирает данные в Google-таблицу, а в Claude Code за эфир проходят путь от идеи до работающего сервиса.

Занять место

Как проверить бота и оставить его работать?

Сначала получите ответ в тестовом запуске всей цепочки, затем нажмите Publish и проверьте бота ещё раз. В старых видео эта кнопка может называться Activate. Пока сценарий только тестируется, успешный ответ ещё не означает, что бот готов принимать сообщения постоянно.

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

Если опубликованный бот замолчал после теста, проверьте конфликт адресов вебхука: Telegram хранит один адрес для бота, и тестовый адрес заменяет рабочий. Для дальнейших экспериментов заведите отдельного бота. Другой вариант: временно снимите публикацию сценария, выполните тест и снова нажмите Publish. На время такой проверки рабочий приём сообщений остановится.

По теме: Установка n8n: на компьютер через Docker и на VPS

Бот молчит: что проверить первым?

Начните с места, до которого дошло сообщение: нет события у Telegram Trigger, нет ответа AI Agent или не отправляет последний узел Telegram. Если вы сначала проверите входящее сообщение и результат модели, то сможете отделить проблему доставки от неверного выражения в поле, не меняя всю цепочку сразу.

  • Ошибка «An HTTPS URL must be provided for webhook»: проверьте публичный HTTPS-адрес и TLS на обратном прокси, затем настройку N8N_WEBHOOK_URL.
  • Триггер завис в ожидании: закройте и заново откройте сценарий. Если это повторяется, проверьте поддержку websocket на обратном прокси; при отсутствии связи с Telegram вернитесь к проверке getMe с сервера.
  • Сообщение пришло, AI Agent завершился ошибкой: проверьте ключ и доступ к API выбранной модели с этого сервера. Доступность Telegram сама по себе не подтверждает доступность модели.
  • Агент подготовил ответ, но Telegram его не отправил: сравните Chat ID и Text с выражениями выше, проверьте выбранные учётные данные бота.
  • Бот вспоминает чужой разговор: проверьте ключ Simple Memory. В личных чатах он должен брать номер текущего чата через ссылку на Telegram Trigger.

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

Частые вопросы

Можно ли сделать бота в n8n без сервера?

Для этой схемы нужен постоянно доступный n8n с публичным HTTPS-адресом. Просто открыть n8n на компьютере недостаточно: Telegram Trigger принимает вебхуки и не умеет переключаться на polling.

Как узнать chat id?

Напишите боту и откройте результат Telegram Trigger: номер чата находится в message.chat.id. В поле Chat ID последнего узла используйте выражение со ссылкой на триггер, чтобы бот возвращал ответ каждому отправителю в его чат.

Почему бот отвечает только когда открыт редактор?

Проверьте, опубликован ли сценарий кнопкой Publish. Если после публикации вы запускали тест с тем же ботом, снимите публикацию через Unpublish и снова нажмите Publish; на это время рабочий приём сообщений остановится. Для дальнейших тестов используйте отдельного бота.

Можно ли ограничить бота только своим аккаунтом?

Да, укажите свой числовой идентификатор в Restrict to User IDs узла Telegram Trigger. Ограничение по чатам задаётся отдельно, через Restrict to Chat IDs; оно полезно, если бот должен принимать сообщения только из выбранного чата.

Когда готовых блоков n8n станет мало, посмотрите, как работают другие ИИ-агенты. На бесплатном мастер-классе «Вайбкодинг и AI-агенты» завтра в 12:00 МСК покажут личного агента Якова в Telegram, который расшифровывает аудио и ведёт контент-завод канала.

Записаться бесплатно
Разборы, кейсы и фишки вайбкодинга каждую неделю в телеграм-канале «Яков вайбкодит».
Смотрите ИИ-агента в деле: завтра в 12:00 МСК, бесплатно Записаться