Как создать бота в тг n8n

Как создать бота в Telegram с использованием n8n: полное руководство

Создание Telegram-бота с помощью n8n представляет собой процесс визуального программирования, где логика бота строится путем соединения узлов (нод) в рабочем процессе (workflow). n8n — это инструмент с открытым исходным кодом для автоматизации задач, который использует парадигму workflow automation. Для создания бота вам не потребуется писать код в традиционном понимании, но необходимо понимать логику взаимодействия с Telegram Bot API и принципы построения потоков данных в n8n.

Предварительные требования и настройка

Перед началом работы в n8n необходимо выполнить несколько обязательных шагов по настройке самого бота в Telegram.

1. Создание бота через BotFather

    • Откройте Telegram и найдите официального бота @BotFather.
    • Отправьте команду /newbot.
    • Укажите отображаемое имя (display name) для вашего бота.
    • Задайте уникальное имя пользователя (username) бота, которое должно заканчиваться на «bot» (например, my_test_n8n_bot).
    • После успешного создания BotFather предоставит вам токен доступа (API Token). Этот токен — секретный ключ для управления вашим ботом. Сохраните его в надежном месте.

    2. Получение Chat ID (опционально, но рекомендуется)

    Для отправки сообщений в приватные чаты или для отладки вам может понадобиться ваш личный Chat ID. Его можно получить, отправив сообщение боту @userinfobot. Этот идентификатор — уникальный номер вашей беседы с ботом.

    Настройка n8n для работы с Telegram

    Убедитесь, что ваш экземпляр n8n запущен и доступен. Вы можете использовать облачную версию n8n, self-hosted вариант или локальную установку через Docker.

    • В интерфейсе n8n перейдите в раздел Credentials (Учетные данные) в боковом меню.
    • Нажмите «Add Credential» (Добавить учетные данные) и выберите из списка «Telegram Trigger API» или «Telegram API».
    • Введите полученный от BotFather токен в соответствующее поле и сохраните учетные данные. Дайте им понятное имя, например, «My Telegram Bot».

    Создание первого рабочего процесса (Workflow): Эхо-бот

    Простейший бот, который повторяет (возвращает эхом) сообщение пользователя, демонстрирует базовые принципы.

    Шаг 1: Создание триггера

    • Создайте новый workflow.
    • На панели узлов найдите и добавьте ноду Telegram Trigger.
    • Сконфигурируйте ноду: выберите созданные ранее учетные данные (Credentials) и в поле «Updates» выберите message. Это означает, что workflow будет запускаться каждый раз, когда бот получает новое сообщение.
    • Нажмите «Execute Node» для тестирования. Отправьте сообщение вашему боту в Telegram. Если настройки верны, нода должна активироваться, и вы увидите входящие данные, содержащие текст сообщения, информацию об отправителе и Chat ID.

    Шаг 2: Обработка и ответ

    • Добавьте ноду Telegram (не триггер, а ноду для отправки сообщений).
    • Соедините выход (output) ноды Telegram Trigger с входом (input) ноды Telegram.
    • В настройках ноды Telegram выберите операцию Send Message.
    • В поле «Chat ID» укажите {{ $json.chat.id }}. Это выражение в нотации n8n извлекает Chat ID из входящего сообщения, чтобы ответить тому же пользователю.
    • В поле «Text» введите {{ $json.message.text }}. Это извлечет текст исходного сообщения пользователя.
    • Сохраните workflow и активируйте его, переведя тумблер в активное состояние в правом верхнем углу.

    Теперь ваш бот полностью функционирует. Любое текстовое сообщение, отправленное ему, будет возвращено обратно.

    Ключевые узлы (ноды) для Telegram в n8n

    Для создания сложной логики потребуется использовать различные ноды. Вот основные из них:

    Название ноды Назначение Ключевые операции (Resources/Operations)
    Telegram Trigger Запуск workflow по событию от Telegram (входящее сообщение, callback_query и т.д.). message, callback_query, channel_post, inline_query
    Telegram Выполнение действий: отправка сообщений, медиа, управление клавиатурами. Send Message, Send Audio, Send Photo, Edit Message Text, Answer Callback Query
    IF (Условие) Ветвление логики на основе данных из сообщения (текст, тип, данные пользователя). Проверка условий (например, $json.message.text = "/start")
    Switch Сложное ветвление по множеству условий (аналог switch/case в программировании). Маршрутизация по разным веткам workflow.
    Code (JavaScript/Python) Выполнение пользовательской логики, сложных вычислений, парсинга данных. Обработка и преобразование данных между нодами.
    HTTP Request Взаимодействие с внешними API (получение погоды, курсов валют, данных из БД). GET, POST, PUT, DELETE запросы к сторонним сервисам.

    Создание интерактивного бота с кнопками

    Инлайн-клавиатуры (InlineKeyboardMarkup) — мощный инструмент для создания интерактивного интерфейса.

    Шаг 1: Отправка сообщения с кнопками

    • Добавьте ноду Telegram (операция Send Message).
    • В настройках текста укажите, например, «Выберите действие:».
    • Разверните раздел «Additional Fields» и найдите «Reply Markup». Выберите опцию «Inline Keyboard».
    • Заполните матрицу кнопок. Например:
      • Row 1, Button 1 Text: «Погода», Callback Data: weather
      • Row 1, Button 2 Text: «Курс валют», Callback Data: currency
      • Row 2, Button 1 Text: «Помощь», Callback Data: help
    • Callback Data — это строка, которая будет отправлена вашему боту при нажатии на кнопку.

    Шаг 2: Обработка нажатия на кнопку (Callback Query)

    • Добавьте вторую ноду Telegram Trigger в тот же workflow или создайте новый.
    • В настройках выберите в поле «Updates» значение callback_query.
    • Эта нода будет активироваться при каждом нажатии на инлайн-кнопку.
    • Данные о нажатии будут содержаться в $json.callback_query.data (например, «weather»).
    • Используйте ноду Switch для маршрутизации по значению data.
    • В каждой ветке (route) реализуйте соответствующую логику: запрос к API погоды, формирование ответа.
    • Важно использовать ноду Telegram с операцией Answer Callback Query, чтобы убрать «часики» на кнопке, и операцию Edit Message Text или Send Message для вывода результата пользователю.

    Обработка различных типов контента и команд

    Бот может реагировать не только на текст, но и на файлы, изображения, голосовые сообщения и команды.

    Обработка команд (например, /start, /help)

    • После ноды Telegram Trigger (message) добавьте ноду IF.
    • Настройте условие: $json.message.text содержит /start.
    • В ветке «true» разместите логику приветствия.
    • В ветке «false» можно добавить еще одну ноду IF для проверки другой команды или общую логику обработки текста.

    Работа с медиафайлами

    • Тип полученного контента можно определить через $json.message.photo, $json.message.document и т.д.
    • Для скачивания файла, отправленного боту, используйте ноду Telegram с операцией Get (для получения метаданных файла), а затем ноду HTTP Request для загрузки по прямому URL, предоставленному Telegram.
    • Для отправки медиа используйте соответствующие операции ноды Telegram: Send Photo, Send Document, Send Audio.

    Интеграция с внешними сервисами

    Мощь n8n раскрывается при подключении бота к другим приложениям. Пример: бот, отправляющий уведомление в Telegram при новом заказе в Google Sheets.

    • Используйте триггер Google Sheets Trigger (при добавлении новой строки).
    • Обработайте данные заказа в workflow (например, с помощью ноды Code).
    • Используйте ноду Telegram для отправки форматированного сообщения с деталями заказа в конкретный чат (Chat ID нужно указать статически или получить из базы данных).

    Ошибки и отладка

    В n8n встроены эффективные инструменты отладки.

    • Execute Node: Запуск отдельной ноды для проверки ее вывода.
    • Editor UI: Визуальный просмотр данных, проходящих через каждое соединение между нодами. Нажмите на соединение, чтобы увидеть JSON структуру данных в этой точке.
    • Error Output: Если нода завершается с ошибкой, это отображается визуально, и вы можете просмотреть детали ошибки.
    • Распространенные ошибки:
      • Неверный или просроченный токен бота.
      • Неправильный формат Chat ID (должен быть числовым).
      • Попытка отправить сообщение пользователю, который не начал диалог с ботом первым.
      • Превышение лимитов Telegram API (например, на частоту отправки сообщений).

    Развертывание и поддержка бота

    Для постоянной работы бота workflow должен быть активен.

    • Активация: В интерфейсе редактора workflow переведите тумблер в положение «Active».
    • Webhook vs Polling: Нода Telegram Trigger в n8n использует long-polling (опрос серверов Telegram) для получения обновлений. Для production-среды рекомендуется настроить вебхук через дополнительные настройки для повышения надежности и скорости отклика, но это требует статического публичного адреса для вашего инстанса n8n.
    • Мониторинг: Используйте вкладку «Executions» для просмотра истории запусков, выявления неудачных выполнений и их причин.

    Ответы на часто задаваемые вопросы (FAQ)

    1. Нужно ли мне программирование для создания бота в n8n?

    Базового программирования не требуется. Логика строится визуально. Однако для реализации сложных функций (парсинг текста, работа с массивами) может потребоваться использование ноды Code с JavaScript, что подразумевает знание основ этого языка.

    2. Сколько стоит хостинг бота на n8n?

    Стоимость хостинга самого бота (токен BotFather) — бесплатна. Затраты связаны с инфраструктурой для запуска n8n: это может быть бесплатный план на облачном сервисе (с ограничениями), ваш собственный сервер (VPS) или платные подписки на n8n.cloud. Сам Telegram Bot API не взимает плату за стандартное использование.

    3. Как обрабатывать несколько ботов в одном n8n?

    Создайте отдельные учетные данные (Credentials) для каждого токена бота. В настройках нод Telegram и Telegram Trigger выбирайте соответствующие учетные данные. Workflow для разных ботов можно размещать в одном проекте, но логичнее разделять их по разным workflow.

    4. Бот не отвечает на сообщения. В чем причина?

    • Убедитесь, что workflow активирован (тумблер «Active» включен).
    • Проверьте, правильно ли указаны учетные данные в ноде Telegram Trigger.
    • Убедитесь, что нода Telegram Trigger настроена на правильный тип обновлений (например, «message»).
    • Проверьте историю выполнений (Executions) на наличие ошибок.
    • Убедитесь, что вы отправили боту команду /start, если это требуется для начала диалога.

5. Как принимать платежи через Telegram бота в n8n?

Прямого узла для Telegram Payments в n8n нет. Однако вы можете использовать комбинацию нод: обработать команду на оплату, сгенерировать счет через внешний платежный API (например, Stripe, ЮKassa) с помощью ноды HTTP Request, а затем отправить пользователю ссылку на оплату. Подтверждение оплаты также обрабатывается через обратный вызов (webhook) от платежной системы.

6. Можно ли использовать базу данных с ботом в n8n?

Да. n8n имеет встроенные ноды для популярных баз данных: PostgreSQL, MySQL, SQLite, MongoDB. Вы можете сохранять данные пользователей, их состояния (state), историю взаимодействий и затем использовать эти данные в логике бота.

7. Как ограничить доступ к боту для определенных пользователей?

После ноды триггера добавьте ноду IF. В условии проверяйте, равен ли $json.message.from.id разрешенному Chat ID (или содержится ли в массиве разрешенных ID, который можно хранить в переменной среды или базе данных). Если ID не разрешен, можно завершить выполнение workflow или отправить сообщение об отказе.

8. В чем отличие ноды Telegram Trigger от ноды Telegram?

Telegram Trigger — это нода-источник (trigger node). Она только получает входящие события от Telegram (сообщения, нажатия кнопок) и запускает workflow. Она не может отправлять сообщения. Telegram — это нода действия (action node). Она выполняет активные операции: отправку, редактирование, удаление. В одном workflow обычно используется один Trigger и множество action-нод Telegram для ответов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *