n8n Telegram бот: создание с нуля

Полное руководство по созданию Telegram-бота на n8n с интеграцией ChatGPT, Claude или локальных ИИ-моделей. От простого эхо-бота до умного ассистента с памятью.

25 минут чтения Обновлено: 06.12.2025

Обзор возможностей

n8n предоставляет мощные инструменты для создания Telegram-ботов любой сложности. Вот что можно реализовать:

ИИ-ассистенты

Боты с GPT-5.1, Claude Opus 4.5, Gemini 3 или локальными моделями. Отвечают на вопросы, генерируют контент, помогают с задачами.

Автоматизации

Уведомления о событиях, напоминания, интеграция с CRM, отправка отчётов по расписанию.

Обработка файлов

Приём документов, изображений, аудио. OCR, анализ картинок через Vision API, транскрибация голоса.

Поддержка клиентов

Первая линия поддержки, FAQ-бот, маршрутизация обращений, сбор обратной связи.

Что понадобится

  • Работающий n8nинструкция по установке
  • SSL-сертификат — Telegram требует HTTPS для webhooks
  • Telegram-аккаунт — для создания бота через BotFather
  • API-ключ ИИ — OpenAI, Anthropic или другой провайдер (для ИИ-бота)

Для тестирования

Если у вас нет сервера с SSL, используйте n8n.cloud (бесплатный trial) или запустите n8n локально с флагом --tunnel — это создаст временный публичный URL.

Шаг 1: Создание бота в BotFather

  1. Откройте Telegram и найдите @BotFather
  2. Отправьте команду /newbot
  3. Введите имя бота (отображаемое название)
  4. Введите username бота (должен заканчиваться на "bot")
  5. Скопируйте полученный токен — он понадобится для n8n
Пример токена
1234567890:ABCdefGHIjklMNOpqrsTUVwxyz123456789

Важно!

Никогда не публикуйте токен бота в открытых источниках. Если токен скомпрометирован, немедленно получите новый через /revoke в BotFather.

Шаг 2: Простой эхо-бот

Начнём с простого бота, который повторяет сообщения пользователя. Это поможет проверить, что всё настроено правильно.

Создание workflow

  1. Откройте n8n и создайте новый workflow
  2. Добавьте ноду Telegram Trigger
  3. В настройках выберите "Credential to connect with" → Add new credential
  4. Вставьте токен бота из BotFather
  5. В поле "Updates" выберите "Message"

Добавление ответа

  1. Добавьте ноду Telegram (не Trigger, а обычную)
  2. Соедините её с Telegram Trigger
  3. Выберите операцию "Send Message"
  4. В "Chat ID" укажите: {{ $json.message.chat.id }}
  5. В "Text" укажите: Вы написали: {{ $json.message.text }}
Telegram Trigger
Telegram Send

Активация бота

  1. Нажмите "Save" для сохранения workflow
  2. Нажмите переключатель "Active" в правом верхнем углу
  3. Откройте вашего бота в Telegram и отправьте любое сообщение
  4. Бот должен ответить, повторив ваше сообщение

Шаг 3: Бот с ChatGPT/Claude

Теперь добавим интеграцию с ИИ, чтобы бот давал умные ответы.

Вариант 1: OpenAI (ChatGPT)

  1. Добавьте ноду OpenAI между Trigger и Telegram Send
  2. Создайте credential с вашим API-ключом OpenAI
  3. Выберите операцию "Message a Model"
  4. Выберите модель (gpt-4o рекомендуется)
  5. В "Prompt" → "User Message" укажите: {{ $json.message.text }}
System Prompt для бота
Ты — дружелюбный AI-ассистент в Telegram. Отвечай кратко и по делу.
Используй эмодзи умеренно. Если не знаешь ответа — честно скажи об этом.
Отвечай на русском языке, если пользователь пишет на русском.

Вариант 2: Anthropic Claude

  1. Добавьте ноду Anthropic
  2. Создайте credential с API-ключом Anthropic
  3. Выберите модель (claude-3-5-sonnet рекомендуется)
  4. Настройте аналогично OpenAI

Вариант 3: Ollama (локальные модели)

Если хотите использовать бесплатные локальные модели:

  1. Установите Ollama на сервер: curl -fsSL https://ollama.com/install.sh | sh
  2. Скачайте модель: ollama pull llama3
  3. В n8n добавьте ноду HTTP Request
  4. Настройте POST запрос к Ollama API
HTTP Request к Ollama
URL: http://localhost:11434/api/generate
Method: POST
Body (JSON):
{
  "model": "llama3",
  "prompt": "{{ $json.message.text }}",
  "stream": false
}

Обновлённая структура workflow

Telegram Trigger
OpenAI / Claude
Telegram Send

В ноде Telegram Send измените текст на: {{ $json.message.content }} (для OpenAI) или соответствующее поле для других провайдеров.

Шаг 4: Добавление памяти диалога

Чтобы бот помнил контекст разговора, нужно хранить историю сообщений. Рассмотрим простой вариант с Google Sheets:

Структура таблицы

chat_id role content timestamp
123456789 user Привет! 2025-01-15 10:00:00
123456789 assistant Привет! Чем могу помочь? 2025-01-15 10:00:01

Workflow с памятью

Telegram Trigger

Получаем сообщение

Google Sheets (Read)

Получаем последние 10 сообщений для chat_id

Code Node

Формируем массив messages для API

OpenAI

Отправляем с историей

Google Sheets (Append)

Сохраняем user + assistant сообщения

Telegram Send

Отправляем ответ

Code Node — формирование истории
// Получаем историю из Google Sheets
const history = $input.all().map(item => ({
  role: item.json.role,
  content: item.json.content
}));

// Добавляем новое сообщение пользователя
const userMessage = $('Telegram Trigger').item.json.message.text;
history.push({
  role: 'user',
  content: userMessage
});

// Ограничиваем историю последними 10 сообщениями
const recentHistory = history.slice(-10);

return [{
  json: {
    messages: recentHistory,
    chat_id: $('Telegram Trigger').item.json.message.chat.id,
    user_message: userMessage
  }
}];

Шаг 5: Обработка команд

Telegram-боты обычно поддерживают команды (начинаются с /). Добавим обработку команд через Switch ноду:

Популярные команды

  • /start — приветствие нового пользователя
  • /help — справка по боту
  • /clear — очистка истории диалога
  • /settings — настройки бота

Настройка Switch

  1. Добавьте ноду Switch после Telegram Trigger
  2. В "Mode" выберите "Rules"
  3. Добавьте правила для каждой команды:
Правила Switch
Rule 1: {{ $json.message.text }} starts with "/start"  → Output 0
Rule 2: {{ $json.message.text }} starts with "/help"   → Output 1
Rule 3: {{ $json.message.text }} starts with "/clear"  → Output 2
Fallback (остальные сообщения)                         → Output 3

Каждый output Switch соединяйте с соответствующей нодой обработки.

Продвинутые функции

Обработка изображений

Для анализа изображений используйте GPT-5.1 или Claude Opus 4.5:

  1. В Telegram Trigger добавьте тип "Photo"
  2. Получите file_id: {{ $json.message.photo[0].file_id }}
  3. Используйте Telegram → Get File для получения URL
  4. Передайте URL в Vision API

Голосовые сообщения

Для транскрибации голоса:

  1. Получите voice file через Telegram API
  2. Используйте OpenAI Whisper для транскрибации
  3. Обработайте текст как обычное сообщение

Inline-кнопки

Добавьте интерактивные кнопки под сообщениями:

Reply Markup JSON
{
  "inline_keyboard": [
    [
      {"text": "Да ✅", "callback_data": "confirm_yes"},
      {"text": "Нет ❌", "callback_data": "confirm_no"}
    ],
    [
      {"text": "Подробнее 📖", "url": "https://aibot.direct"}
    ]
  ]
}

Ограничение доступа

Для приватного бота добавьте проверку chat_id:

IF Node — проверка доступа
Condition: {{ $json.message.chat.id }} is equal to YOUR_CHAT_ID
True → продолжить
False → отправить "Доступ запрещён"

Часто задаваемые вопросы

Да, для production нужен сервер с публичным IP и SSL-сертификатом. Telegram отправляет webhooks только на HTTPS. Для тестирования можно использовать n8n.cloud или туннель (ngrok).

Используйте базу данных (PostgreSQL, Redis) или Google Sheets для хранения истории. При каждом сообщении извлекайте последние N сообщений пользователя и передавайте их в контекст ИИ.

Да, можно подключить локальные модели через Ollama (Llama 4, Mistral) или использовать бесплатные API (Groq, Together AI с ограничениями). Ollama требует сервер с 8+ GB RAM.

n8n позволяет получать файлы из Telegram через API. Для анализа изображений используйте GPT-5.1, Claude Opus 4.5 или Google Gemini 3 — они умеют "видеть" картинки.

Проверьте: 1) Webhook установлен корректно (getWebhookInfo), 2) SSL-сертификат валидный, 3) n8n workflow активен, 4) Нет ошибок в логах. Частая причина — неправильный URL webhook.

Нужен Telegram-бот для бизнеса?

Мы создаём умных Telegram-ботов под ключ: от простых FAQ-ботов до сложных ИИ-ассистентов с интеграцией в CRM. Работаем с n8n, обеспечиваем приватность данных.

0 просмотров