Подключение Telegram бота к Node-RED: создание чат-бота для умного дома

🤖 Telegram + Node-RED: создаём чат-бота для управления умным домом

📅 Дата публикации: 22 мая 2026 ⏱️ Время чтения: ~12 минут

Как уже ранее в статье про подключение Telegram напрямую к Home Assistant, мы затронули тот факт, что строить различные автоматизации удобнее и практичнее в Node-RED, а также рассмотрели некоторые технические моменты.

Поэтому пришло время разобраться с интеграцией Telegram в Node-RED — визуальном инструменте, который позволяет создавать сложные сценарии без написания громоздкого кода.

В статье рассмотрим: создание бота через BotFather, установку библиотеки node-red-contrib-telegrambot, настройку подключения в Node-RED, создание простейшего эхо-бота, а также обработку команд с помощью узла switch.

1. Создание Telegram-бота и получение токена

🤖 BotFather — официальный бот в Telegram для создания и управления другими ботами.
  1. Перейдите по ссылке t.me/BotFather и нажмите кнопку «Старт»
  2. Отправьте команду /newbot для создания нового бота
  3. Введите имя бота (например, «Домашний бот») — оно будет отображаться пользователям
  4. Введите username бота — он должен заканчиваться на bot (например, myHomeBot или my_home_bot)
  5. После успешного создания BotFather выдаст API-ключ — сохраните его, он понадобится позже
⚠️ Важное уточнение: Чтобы бот корректно работал в Node-RED, рекомендуется создать нового бота специально для этого вида связи. Не используйте бота, который уже подключён к Home Assistant напрямую — возможны конфликты.

2. Установка библиотеки в Node-RED

  1. Откройте интерфейс Node-RED (http://IP_сервера:1880)
  2. Нажмите на значок «гамбургера» (три полоски) в правом верхнем углу
  3. Выберите «Manage palette» (Управление палитрой)
  4. Перейдите на вкладку «Install» (Установить)
  5. В строке поиска введите: node-red-contrib-telegrambot
  6. Нажмите кнопку «Install» рядом с найденным пакетом
🔗 Официальный источник: flows.nodered.org/node/node-red-contrib-telegrambot

3. Подключение бота внутри Node-RED

  1. Перетащите на рабочую область любой узел, например, telegram sender
  2. Дважды кликните по нему, чтобы открыть настройки
  3. Рядом с полем Bot нажмите на значок карандаша ✏️, чтобы добавить новый конфигурационный узел
  4. В открывшемся окне:
    • Name: Введите любое понятное имя (например, «Мой первый бот»)
    • Token: Вставьте сюда тот самый токен, который вы скопировали у BotFather
  5. Нажмите Add (Добавить), а затем Done (Готово)
💡 Дополнительные настройки (если что-то не работает):
  • В том же окне конфигурации найдите поле Server URL (оно может быть пустым). Скопируйте и вставьте туда адрес: https://api.telegram.org — это может помочь, если нода не может подставить стандартный URL
  • В том же окне конфигурации можно указать свой ник аккаунта или ID чата (узнать можно у бота @getidsbot)

4. Пример 1: Эхо-бот (отвечает любым сообщением)

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

Поток Telegram в Node-RED
Схема потока: receiver → function → sender

Узел 1: telegram receiver

  • Перетащите узел telegram receiver на рабочую область
  • Дважды кликните по нему
  • В поле Bot выберите созданную вами конфигурацию
  • Нажмите Done

Узел 2: function (обработка сообщения)

  • Перетащите узел function на рабочую область
  • Дважды кликните по нему
  • В поле Name напишите, например, «Формирование ответа»
  • Скопируйте и вставьте следующий код в поле On Message:
// Этот код получает текст из входящего сообщения и формирует ответ // 1. Извлекаем ID чата, откуда пришло сообщение var chatId = msg.payload.chatId; // 2. Извлекаем текст присланного сообщения var receivedText = msg.payload.content || "[пустое сообщение]"; // 3. Формируем новое сообщение для отправки msg.payload = { chatId: chatId, // Кому отвечаем type: "message", // ТИП СООБЩЕНИЯ - ЭТО КЛЮЧЕВОЙ МОМЕНТ! content: "Вы написали: " + receivedText // Текст ответа }; // 4. Возвращаем msg, чтобы оно ушло дальше по потоку return msg;

Узел 3: telegram sender

  • Перетащите узел telegram sender на рабочую область
  • Дважды кликните по нему
  • В выпадающем списке Bot выберите вашу конфигурацию
  • Остальные поля пока можно не трогать
  • Нажмите Done

Запуск:

  1. Соедините выход telegram receiver со входом function
  2. Соедините выход function со входом telegram sender
  3. Нажмите красную кнопку Deploy в правом верхнем углу
✅ Готово! Отправьте вашему боту в Telegram любое сообщение — он ответит вам тем же.
Работа эхо-бота в Telegram
Пример работы эхо-бота в Telegram

5. Пример 2: Обработка команды /start через switch

Теперь давайте сделаем так, чтобы бот отвечал только на конкретную команду, например, /start. Для этого используем узел switch.

Поток с switch в Node-RED
Схема потока с узлом switch

Настройка узла switch

  • Перетащите узел switch на рабочую область
  • Дважды кликните по нему
  • В поле Property укажите путь к тексту сообщения: payload.content
  • Убедитесь, что в поле «1» выбрано:
    • Comparison: ==
    • Value type: string
    • Value: /start
  • Нажмите Add rule (Добавить правило)
  • Выберите otherwise — это будет второй выход для всех остальных сообщений
  • Нажмите Done

Как теперь работает поток:

  • Если пользователь отправит команду /start → сообщение пойдёт в первый выход узла switch (к вашему function)
  • Если пользователь отправит что-то другое → сообщение пойдёт во второй выход (который можно подключить к другому function для ответа «Я понимаю только команду /start»)

Упрощённый код function для команды /start

// Готовим приветственное сообщение msg.payload = { chatId: msg.payload.chatId, type: "message", content: "✅ Привет! Я подключен к Node-RED и работаю исправно. Команда /start получена." }; return msg;

Дополнительный function для неизвестных команд (подключается ко второму выходу switch):

msg.payload = { chatId: msg.payload.chatId, type: "message", content: "❌ Я понимаю только команду /start" }; return msg;
✅ Готово! Теперь ваш бот отвечает только на команду /start, а на всё остальное — вежливо сообщает, что понимает только эту команду.
Работа эхо-бота в Telegram
Пример работы команд в Telegram
💡 Что дальше? На основе этой базы вы можете:
  • Добавить команду /status для получения статуса устройств
  • Подключить узлы Home Assistant для управления светом, климатом и т.д.
  • Создать инлайн-кнопки для удобного управления (требуется другой тип узлов)
  • Интегрировать с внешними API (погода, курсы валют, напоминания)
Мы используем cookie-файлы. Это нужно для лучшей работы сайта. Продолжая пользоваться сайтом, вы соглашаетесь с этим.