ВойтиПолучить доступ

Настройки Claude Code10 минобновлено

n8n Telegram Trigger: бот молчит

Если n8n Telegram Trigger работает в тесте, а после публикации бот молчит, сначала проверь зарегистрированный webhook. Telegram хранит один адрес доставки на бота: ручной тест может заменить рабочий адрес. Второй workflow с тем же токеном проблему не изолирует.

Ниже - порядок для уже собранного сценария. Документация сверена 9 октября 2026 года. Живого бота по этому маршруту я не проверял; пример чтения состояния проверен локально на искусственных ответах, без обращения к Telegram.

n8n Telegram Trigger: сначала найди место сбоя

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

В n8n открой Overview -> Executions. В фильтрах выбери свой workflow и время, когда написал боту. Execution - один запуск сценария; открой его и посмотри вход Telegram Trigger.

Что видно Следующее действие
В новом запуске есть твоё сообщение Проверь узлы после триггера, особенно отправку ответа
Нового запуска нет Сначала проверь сохранение журналов, затем режим и webhook
Ошибка появляется при публикации Сохрани её текст без токена; проверь регистрацию и HTTPS
Завис только экран ожидания в редакторе Отдельно проверь WebSocket у proxy; не считай это доказательством потери сообщений

Отсутствие записи ещё не доказывает, что события не было. В меню workflow открой Settings и проверь Save successful production executions и Save failed production executions. Для короткой проверки нужны оба журнала; учитывай, что они сохраняют данные сообщений. Используй свой тестовый текст без личных данных, а после проверки верни принятую в проекте политику хранения.

Как вернуть рабочий приём сообщений

Коротко: сначала убери конфликт теста с рабочим ботом. Затем проверь опубликованный режим и отправь новое контрольное сообщение без ручного запуска.

1. Проверь бота, событие и фильтры

Открой Telegram Trigger. В Credential to connect with должны быть credentials именно того бота, которому ты пишешь. Credentials - сохранённые данные подключения; токен заново в чат или в скриншот не вставляй.

Для первого контроля выбери событие Message и личный диалог со своим ботом. Если заданы Restrict to Chat IDs или Restrict to User IDs, сравни их с тестовым диалогом. Не убирай рабочие ограничения наугад: неправильный ID лучше проверить в отдельной тестовой копии.

2. Разведи тестового и рабочего бота

Для разработки используй другого Telegram-бота и другие credentials в тестовой копии. Как создать бота и получить токен, описано в справке Telegram credentials. В копии убери действия, которые пишут в рабочую CRM, запускают рассылку или платный сервис.

Если отдельного бота нет, справка n8n предлагает временно отключить рабочий workflow, выполнить тест и включить обратно. Это остановка рабочего приёма сообщений. Сначала согласуй паузу с тем, кто пользуется ботом.

3. Восстанови опубликованный режим

Если тестировал рабочий токен, закончи тест и следуй маршруту из common issues: Unpublish -> тест -> Publish. В текущем интерфейсе Unpublish находится в меню рядом с Publish. Если тест уже завершён, после согласованной паузы верни Publish.

В старом интерфейсе встречается переключатель Active: выключение и повторное включение рабочего сценария восстанавливает его режим. Сопоставь действие со своей версией, не ищи кнопку из другого интерфейса. Сохранённая правка в редакторе сама по себе не означает, что рабочая версия обновилась.

Дождись завершения публикации. Если интерфейс сообщает Failed to publish или Published, partial, проверь сообщение о регистрации именно Telegram Trigger. Наличие других работающих триггеров не подтверждает, что Telegram подключён.

4. Проверь новый запуск и отдельно ответ

Отправь своему боту в личном диалоге новый текст, например проверка рабочего режима. Не нажимай Execute workflow: это снова тестовый путь. Найди свежее production-выполнение в Executions и сопоставь входной текст.

Если сообщение внутри запуска есть, n8n Telegram Trigger доставил это событие. Когда бот должен отвечать, проверь следующий узел Telegram -> Resource: Message -> Operation: Send Message. Для простой цепочки сразу после триггера поле Chat ID получает {{ $json.message.chat.id }}, а Text - обычный текст Сообщение получено. После промежуточных узлов проверь, что поле message.chat.id сохранилось; выражение нельзя переносить вслепую.

Ответ отправляй только себе через тестового бота или в согласованной проверке рабочего. Результат - новое событие в n8n и ожидаемый ответ в твоём диалоге. Зелёный триггер подтверждает только входящую часть.

Как прочитать webhook без вывода токена

Коротко: метод getWebhookInfo только читает состояние. Он покажет, установлен ли webhook, на каком он домене и есть ли ошибка доставки. Не открывай адрес Bot API с токеном в браузере и не отправляй его агенту.

Это дополнительная ветка, если режим проверен, журналы включены, а новый запуск не появляется. Нужен Python 3 на своём компьютере. Попроси агента сохранить код ниже как webhook-check.py в отдельной папке, без токена в файле. Затем запусти этот файл в обычном терминале своего компьютера. Введи токен в скрытое поле: программа отправит его только на api.telegram.org.

import getpass
import json
import sys
import warnings
from urllib.error import HTTPError, URLError
from urllib.parse import urlsplit
from urllib.request import urlopen


def summarize(result):
    url = result["url"]
    pending = result["pending_update_count"]
    error = str(result.get("last_error_message", "")).lower()
    if not isinstance(url, str) or type(pending) is not int or pending < 0:
        raise ValueError("invalid webhook status")
    kind = None
    for needle, label in (("ssl", "SSL"), ("certificate", "SSL"),
                          ("resolve", "DNS"), ("404", "HTTP 404")):
        if needle in error:
            kind = label
            break
    return {
        "webhook_set": bool(url),
        "webhook_host": urlsplit(url).hostname,
        "test_url": "/webhook-test/" in urlsplit(url).path,
        "pending_update_count": pending,
        "last_error_date": result.get("last_error_date"),
        "delivery_error": kind or ("другая ошибка" if error else None),
    }


def main():
    if not sys.stdin.isatty():
        raise SystemExit("Запусти файл в обычном терминале")
    try:
        with warnings.catch_warnings():
            warnings.simplefilter("error", getpass.GetPassWarning)
            token = getpass.getpass("Токен бота, ввод скрыт: ").strip()
    except getpass.GetPassWarning:
        raise SystemExit("Терминал не может скрыть ввод; проверка остановлена") from None
    if not token:
        raise SystemExit("Токен не введён")
    try:
        with urlopen("https://api.telegram.org/bot" + token
                     + "/getWebhookInfo", timeout=15) as response:
            data = json.load(response)
        if data.get("ok") is not True:
            raise ValueError("API rejected request")
        status = summarize(data["result"])
    except HTTPError as error:
        raise SystemExit("Telegram ответил HTTP " + str(error.code)) from None
    except (URLError, TimeoutError, OSError):
        raise SystemExit("Не удалось прочитать API; проверь сеть и TLS") from None
    except (ValueError, KeyError, TypeError, AttributeError):
        raise SystemExit("Ответ API неполный или неверный") from None
    print(json.dumps(status, ensure_ascii=False, indent=2))


if __name__ == "__main__":
    main()

Код не регистрирует адрес, не удаляет очередь и не отправляет сообщения. Он скрывает полный URL и текст ошибки, выводит только сводку. delivery_error обозначает найденное слово в ошибке, а не окончательную причину. Одна и та же ошибка SSL требует проверки сертификата, но не разрешения отключить его проверку.

Поле сводки Как читать
webhook_set: false Webhook не установлен; для Telegram Trigger нужно разобраться с публикацией и регистрацией
webhook_host Сравни с доменом своей n8n; другой домен - повод проверить, где ещё используется бот
test_url: true В адресе стандартный тестовый путь n8n; после теста восстанови рабочий режим
pending_update_count Число обновлений, ожидающих доставки; один снимок не показывает динамику
last_error_date Время последней ошибки в формате Unix; старая ошибка могла остаться после исправления
delivery_error SSL, DNS, HTTP 404 или другая ошибка; это сокращённая метка, подробности разбирай локально

Свой домен и test_url: false не доказывают, что webhook принадлежит нужному workflow. Для этого сопоставь полный адрес локально с адресом триггера или попроси человека, который поддерживает интеграцию. URL и токен в публичный отчёт не копируй.

Не запускай getUpdates параллельно. Telegram описывает polling и webhook как взаимоисключающие способы получения обновлений. Также не вызывай наугад setWebhook, deleteWebhook и очистку ожидающих сообщений: это уже изменение рабочего состояния.

Что проверить в HTTPS и proxy

Коротко: эта ветка для n8n на своём сервере. Нужен публичный HTTPS-адрес, доступный Telegram. Открывающийся интерфейс n8n ещё не подтверждает, что входящий webhook доходит до сценария.

В n8n Cloud не пытайся исправлять сервер через переменные окружения. Проверь credentials, публикацию и событие; при ошибке регистрации сохрани очищенное сообщение для поддержки.

Для self-hosted n8n за reverse proxy сравни адрес в Webhook URLs Telegram Trigger со своим публичным адресом. localhost, адрес внутреннего контейнера и обычный HTTP здесь не подходят.

Есть различие версий. Текущая справка proxy указывает N8N_WEBHOOK_URL, заменяющий WEBHOOK_URL начиная с n8n 2.35.0. Страница common issues ещё использует старое имя. Перед правкой проверь установленную версию; для прежней версии сверяй поддерживаемую переменную по её документации.

Для версии 2.35.0 и новее, если перед n8n ровно один reverse proxy, пример настройки выглядит так:

N8N_WEBHOOK_URL=https://n8n.example.com/
N8N_PROXY_HOPS=1

Домен здесь учебный, замени его своим. Значение числа proxy нельзя копировать в более сложную схему. Справка также требует передавать с последнего proxy заголовки X-Forwarded-For, X-Forwarded-Host и X-Forwarded-Proto. Изменение конфигурации и перезапуск согласуй с тем, кто поддерживает сервер; затем повтори регистрацию и проверку нового сообщения.

При ошибке HTTPS проверь сертификат и публичный адрес. При зависшем ожидании события в редакторе отдельно проверь поддержку WebSocket у proxy - именно эту причину выделяет справка Telegram Trigger. Не отключай TLS-проверку и не меняй всю конфигурацию по одному форумному примеру.

Что поручить агенту и как принять исправление

Коротко: дай агенту состояние, границы и критерий результата. Сначала он должен предложить одну проверку без изменения webhook; рабочие правки - после твоего разрешения.

Такой промпт подойдёт Claude Code или Codex. Если ещё не работал с агентом, начни с первой задачи с проверкой результата.

Telegram-бот в n8n получает сообщения в тесте,
но после публикации не создаёт новое выполнение.
Версия n8n: впишу свою. Размещение: Cloud или свой сервер.
Журналы успешных и неуспешных production-запусков проверены.

Сверь Telegram Trigger common issues и документацию моей версии.
Сначала предложи одну проверку, которая только читает состояние.
Токен, credentials, .env и сообщения пользователей не открывай
и не выводи. Я сам выполню запрос с токеном локально.
Не вызывай setWebhook, deleteWebhook, getUpdates;
не меняй workflow, настройки сервера и рабочие подключения.

Если нужна правка, объясни причину, паузу и способ отката.
Дождись моего разрешения. Готовность проверяем новым
production-событием; если нужен ответ, отдельно смотрим его
в моём тестовом диалоге. Ручной тест готовностью не считается.

Хочешь, чтобы агент чинил такие задачи по понятным правилам? В ClaudeBase есть урок «Рабочее окружение: правила проекта и разрешения» и шаблоны CLAUDE.md/AGENTS.md. Курс учит ставить задачи агенту и проверять результат. Открой программу ClaudeBase и выбери следующий шаг для своего проекта. Программа доступна без оплаты; уроки и рабочая база открываются после оплаты.

Перед завершением проверки убедись: ручное прослушивание закончено, рабочий режим включён без ошибки регистрации, новое сообщение создаёт нужное выполнение. Закрой редактор и повтори контроль из Telegram. Если по сценарию нужен ответ, проверь его отдельно; если бот только запускает обработку, отсутствие ответа само по себе не ошибка.

Источники

Проверены 9 октября 2026 года. Названия кнопок и переменных зависят от версии n8n.

Спрашивают

Пять вопросов по теме

Почему Telegram-бот в n8n работает в тесте, но не после публикации?

Тест мог заменить рабочий webhook: Telegram хранит один адрес доставки на бота. Закончи тест и восстанови опубликованный режим по инструкции своей версии. Для дальнейших проб используй отдельного бота с другими credentials. Затем отправь новое сообщение и проверь production execution, не нажимая ручной запуск.

Можно ли тестировать другой workflow с тем же Telegram-ботом?

Другая копия сценария с прежним токеном не изолирует тест: оба сценария управляют webhook одного бота. Для независимой проверки создай отдельного тестового бота и credentials. Если используешь рабочий токен, остановку рабочего сценария нужно согласовать: в этот промежуток он не будет получать production-события.

Что делать с ошибкой An HTTPS URL must be provided for webhook?

Сообщение означает, что webhook нужен HTTPS-адрес. На своём сервере проверь публичный адрес, сертификат и настройки proxy. В актуальной документации n8n с версии 2.35.0 адрес задаёт N8N_WEBHOOK_URL; прежнее имя WEBHOOK_URL deprecated. Не вставляй localhost или внутренний порт контейнера. В n8n Cloud серверные переменные самостоятельно не меняют.

Execution появился, но бот не ответил - виноват Telegram Trigger?

Если новый execution содержит твоё контрольное сообщение, входящий webhook доставил это событие. Открой выполнение и проверь следующие узлы: дошёл ли поток до отправки, выбран ли нужный бот и правильный chat.id. Успешный вход не подтверждает, что исходящее сообщение отправлено.

Почему Telegram Trigger завис на Waiting for trigger event?

Ожидание до нового сообщения нормально. Если событие уже приходит, но редактор не обновляется или не прекращает слушать, справка n8n рекомендует заново открыть workflow и проверить поддержку WebSocket на reverse proxy. Это отдельная проверка от HTTPS и регистрации webhook; по одному зависшему экрану нельзя установить причину.

Источники