Если 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 Trigger: события и фильтры.
- Telegram Trigger: тест/production, HTTPS и WebSocket.
- Публикация workflow и состояния регистрации.
- Публичный webhook за reverse proxy.
- Telegram Bot API: getWebhookInfo.
- Telegram credentials.
- Telegram: отправка сообщений.
- Просмотр executions и настройки их сохранения.