<!-- source: https://nodbot.ru/integrations/telegram/; markdown: /llms/pages/generated/integrations-telegram.md; type: IntegrationGuide -->
---
title: "Telegram и n8n: боты, команды и alerts | Nodbot"
source_url: "https://nodbot.ru/integrations/telegram/"
canonical_url: "https://nodbot.ru/integrations/telegram/"
language: "ru"
content_type: "IntegrationGuide"
section: "integrations"
generated_at: "2026-05-30"
word_count_source: 1014
---

## AI summary

Problem/Solution-гайд по Telegram и n8n: как построить production-бота с командами, allowlist, нормализацией входящих сообщений, защитой от спама, безопасными alert-ами и понятным маршрутизатором действий.

## Best used for

Страница нужна интеграторам и владельцам n8n, которые хотят внедрить связку без дублей, ручного хаоса и потери данных.

## Key topics

- Telegram Bot API
- n8n Telegram Trigger
- Telegram node
- allowlist
- command router
- chat_id
- idempotency
- alerts

# Telegram и n8n: production-боты, команды, уведомления и защита от спама

Обновлено: 2026-05-30

Используйте JSON как основу: замените credentials, URL порталов, поля CRM и правила дедупликации.

- Проблема и сценарии внедрения

- Архитектура интеграции

- Контракт данных

- Code Node и нормализация

- Готовый workflow JSON

- Пошаговая настройка

- Тесты перед production

- Production-риски

- Полезные ссылки

- Критерии готовности

Проблема: Telegram-бот в n8n часто начинается с одного Trigger и пары сообщений, но быстро ломается: любой пользователь пишет боту, команды смешиваются с текстом поддержки, alert-ы содержат персональные данные, а retry отправляет менеджеру несколько одинаковых уведомлений.

Решение: делаем Telegram-интеграцию как управляемый входной канал: проверяем chat_id и username, разбираем команды, нормализуем текст, вводим allowlist, rate-limit и идемпотентность сообщений, а исходящие уведомления маскируем и отправляем по понятным правилам.


## Проблема: почему Telegram-бот в n8n без правил быстро превращается в хаос

Самая частая ошибка — считать Telegram “просто удобным каналом уведомлений”. В production это полноценный API-вход: он получает команды, файлы, сообщения от незнакомых пользователей, повторные updates и ошибки доставки. Если не отделить команды от обычного текста, бот начинает выполнять лишние действия и отправлять шумные ответы.

Вторая боль — безопасность. Bot token даёт доступ к отправке сообщений от имени бота, а chat_id часто попадает в execution data. Поэтому интеграция Telegram и n8n должна включать allowlist, маскирование данных и контроль того, кому бот отвечает, а кому возвращает нейтральное сообщение.


## Архитектура Telegram bot workflow в n8n

| Блок | Задача | Production-проверка |

| --- | --- | --- |

| Telegram Trigger | принимает update от Bot API | webhook active, bot token в credentials |

| Authorize chat | проверяет chat_id, username и allowlist | нет выполнения команд от чужих пользователей |

| Command router | разбирает /start, /status, /lead, обычный текст | явный список команд, fallback для неизвестных |

| Business action | создаёт задачу, отвечает пользователю или шлёт alert | idempotency по message_id/update_id |

| Safe response | отправляет короткий Telegram-ответ | без токенов, stack trace и лишних ПДн |

| Audit / alert | логирует важные события | rate limit, spam, ошибки отправки |

Для служебных alert-ов используйте отдельный чат или тему, а не тот же диалог, где пользователи общаются с ботом. Так команда поддержки не перепутает системные ошибки и реальные обращения.


## Контракт входящего Telegram update

```json
{
  "update_id": 9042001,
  "message": {
    "message_id": 221,
    "date": 1780125600,
    "chat": {
      "id": 123456789,
      "type": "private",
      "username": "client_user"
    },
    "from": {
      "id": 123456789,
      "is_bot": false,
      "first_name": "Анна",
      "username": "client_user"
    },
    "text": "/status order-10492"
  }
}
```

Ключи для контроля — update_id , message.message_id и chat.id . По ним можно отличить повторное событие, разрешённый чат и конкретную команду.


## Code Node: allowlist, команды и защита от спама

```javascript
const update = $json;
const msg = update.message ?? update.edited_message ?? {};
const chat = msg.chat ?? {};
const text = String(msg.text ?? '').trim();
const allowlist = String($env.TELEGRAM_ALLOWED_CHAT_IDS ?? '')
  .split(',')
  .map(v => v.trim())
  .filter(Boolean);
const chatId = String(chat.id ?? '');
if (!allowlist.includes(chatId)) {
  return [{ json: { action: 'deny', chat_id: chatId, reason: 'chat_not_allowed' } }];
}
const commandMatch = text.match(/^\/(\w+)(?:\s+(.+))?$/);
const command = commandMatch?.[1]?.toLowerCase() ?? 'message';
const arg = commandMatch?.[2]?.trim() ?? '';
const allowedCommands = ['start', 'status', 'lead', 'help'];
if (command !== 'message' && !allowedCommands.includes(command)) {
  return [{ json: { action: 'reply', chat_id: chatId, text: 'Неизвестная команда. Используйте /help.' } }];
}
return [{ json: {
  action: command === 'message' ? 'support_message' : `command_${command}`,
  chat_id: chatId,
  message_id: msg.message_id,
  update_id: update.update_id,
  user: msg.from?.username ?? '',
  command,
  arg,
  text,
  idempotency_key: `telegram:${update.update_id}:${msg.message_id}`
}}];
```

Публичный username бота легко найти или перебрать. Allowlist по chat_id защищает команды, административные действия и внутренние alert-ы от случайных пользователей и спама.


## Готовый workflow JSON: скачать и импортировать

Скачать готовый workflow JSON Скачать тестовый payload

```json
{
  "name": "Nodbot - Telegram n8n production bot with allowlist and command router",
  "nodes": [
    {
      "name": "Telegram Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "purpose": "Получить входящее сообщение или команду"
    },
    {
      "name": "Authorize and parse command",
      "type": "n8n-nodes-base.code",
      "purpose": "Проверить allowlist и разобрать команду"
    },
    {
      "name": "Command Switch",
      "type": "n8n-nodes-base.if",
      "purpose": "Развести /status, /lead, /help и обычный текст"
    },
    {
      "name": "Business action",
      "type": "n8n-nodes-base.httpRequest",
      "purpose": "Запросить CRM/API или создать задачу"
    },
    {
      "name": "Send Telegram reply",
      "type": "n8n-nodes-base.telegram",
      "purpose": "Вернуть безопасный ответ"
    },
    {
      "name": "Audit event",
      "type": "n8n-nodes-base.httpRequest",
      "purpose": "Записать событие в журнал"
    }
  ],
  "connections": "Telegram Trigger → Authorize and parse command → Command Switch → Business action → Send Telegram reply → Audit event"
}
```


## Пошаговая настройка Telegram Bot API, n8n и команд

- Создайте бота через BotFather и сохраните token только в credentials n8n.

- Добавьте Telegram Trigger и активируйте production webhook.

- Передайте разрешённые chat_id через ENV TELEGRAM_ALLOWED_CHAT_IDS .

- Импортируйте workflow JSON и настройте маршруты команд под ваши сценарии.

- Отделите пользовательские ответы от системных alert-ов в разные чаты или темы.


## Тесты перед production

```bash
curl -X POST "https://YOUR-N8N-DOMAIN/webhook/integration-telegram-n8n" \
  -H "Content-Type: application/json" \
  --data @integration-telegram-n8n-payload.json
```

- Напишите боту из разрешённого chat_id и проверьте команду /help .

- Напишите из неразрешённого аккаунта и убедитесь, что action = deny.

- Повторите тот же update и проверьте idempotency key.

- Отправьте неизвестную команду и проверьте fallback-ответ.

- Сымитируйте ошибку Telegram API и убедитесь, что alert не содержит token или полный payload.


## Production-риски

- Bot token в коде. Токен должен жить в credentials или ENV, а не в Function/Code Node.

- Нет allowlist. Любой пользователь может запускать команды или спамить workflow.

- Шумные alert-ы. Повторные ошибки отправляют десятки сообщений в рабочий чат.

- Персональные данные в уведомлениях. Маскируйте телефоны, email и stack trace.

- Нет idempotency. Повторный update может создать вторую задачу или второй ответ.


## Полезные ссылки и смежные материалы

- Telegram Bot API

- n8n Telegram Trigger

- n8n Telegram node

- Workflow: роутер команд Telegram-бота

- Error workflow → Telegram alert


## Критерии готовности

- Разрешённые chat_id заданы через ENV или защищённое хранилище.

- Команды имеют явный router и безопасный fallback.

- Повторный update не запускает бизнес-действие дважды.

- Alert-ы не раскрывают токены, stack trace и лишние ПДн.

- Есть владелец бота, список команд и тестовый payload.

Nodbot настроит Telegram + n8n: команды, allowlist, CRM-действия, безопасные alert-ы, idempotency и мониторинг.
