mysurik.ru

Как я написал телеграм-бота на n8n без единой строчки кода

n8n Telegram бот автоматизация

Зачем мне бот без кода

Я уже рассказывал, что написал телеграм-бота на Python с aiogram для мониторинга сервера. Но когда я захотел сделать второго бота — для ответов на частые вопросы по моему блогу, мне стало лень снова писать код.

Тем более, бот простой: пользователь пишет «привет» — бот отвечает списком команд. Пишет «хостинг» — бот выдаёт статью про выбор хостинга. Пишет «связаться» — пересылает сообщение мне в личку. Никакой сложной логики.

Я решил попробовать сделать это в n8n, который уже крутится на сервере. Нода Telegram в n8n есть из коробки.

Как я собирал workflow

Захожу в n8n, создаю новый workflow. Выбираю триггер «Telegram Trigger» — это такая нода, которая слушает входящие сообщения от бота. n8n сам даёт URL для вебхука Telegram, который нужно указать при создании бота.

Создал бота через BotFather в Telegram, получил токен, вставил в ноду. Сразу появился статус Connected.

Дальше логика: Switch нода проверяет текст сообщения. Если «привет» — отправляет приветствие. Если «хостинг» — шлёт ссылку на статью. Если _default — пишет «не понял, вот список команд».

Весь workflow занял 15 минут. Без единой строчки кода.

Что я добавил потом

Через неделю я добавил интеграцию с WordPress: пользователь пишет «поиск [тема]» — n8n делает запрос к WP REST API, находит посты по теме и присылает ссылки. Для этого понадобилась HTTP Request нода и базовые знания REST API.

Потом добавил форму обратной связи: пользователь пишет «отзыв [текст]» — n8n отправляет мне сообщение в Telegram с текстом отзыва и именем пользователя.

И статистику: /stats — n8n выполняет запрос к WP API, считает количество постов и комментариев, присылает цифры.

Первая боль — вебхуки

Когда я только воткнул Telegram Trigger в n8n, бот молчал как рыба. Я тыкал в ноду — статус Connected висит, вебхук зарегистрирован, а бот не отвечает. Оказалось, n8n ставит вебхук на определённый URL, а у меня за nginx стоял прокси, который резал длинные запросы. Пришлось в конфиг nginx добавить proxy_read_timeout 120s и client_max_body_size 10m. После перезагрузки nginx — бот ожил. Полчаса жизни на ровном месте.

Вторая боль — Switch нода

В n8n Switch работает не как обычный if-else. Там режим fallback надо включать, иначе последнее условие просто отваливается в никуда. Я полдня тупил, почему команда /help проваливается в default, хотя я её явно прописал. Всё потому, что я забыл поставить галочку Fallback Output. Мелочь, а бесит.

Третья боль — Telegram лимиты

Когда я добавил поиск по блогу, бот стал присылать списки статей. Telegram режет сообщения длиннее 4096 символов. Пришлось городить пагинацию через Set ноду и Function ноду, которая режет текст на куски. На Python это решается одной функцией. В n8n — через костыли с циклами. Но жить можно.

Что я вынес из этого

n8n отлично подходит для прототипов и простых интеграций. Если вам нужно быстро склеить Telegram, WordPress, почту, базу данных — n8n сделает это за 15 минут без строчки кода. Но как только логика начинает ветвиться, появляются условия с подусловиями и обработка ошибок — хочешь не хочешь, а лезешь в код.

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

Кстати, бюджет на весь этот зоопарк — ноль рублей. n8n крутится в Docker на том же сервере, что и сайт. Бесплатный план Telegram Bot API. Я только потратил время на настройку. Но время, как говорится, — деньги. Хотя в моём случае — это просто удовольствие от процесса.

С чего начать новичку

Если вы никогда не открывали n8n и хотите попробовать, дам пару ориентиров. Устанавливается он в Docker одной командой. После запуска попадаете в веб-интерфейс, где на пустом холсте перетаскиваете ноды. Главный принцип: данные текут от одной ноды к другой, и каждая нода их преобразует. Это как конвейер на заводе — ничего сложного.

Первый workflow я делал вслепую, подглядывая в документацию. Теперь могу собрать простого бота с закрытыми глазами. Главное — понять две вещи: как работает триггер и как работает Switch. С них и начните. Всё остальное — детали, которые подтянутся по ходу.

Почему я сначала хотел писать на Python

Честно признаюсь: сначала я планировал второго бота тоже писать на Python с aiogram. У меня уже был опыт, всё знакомо, шаблоны под рукой. Но потом прикинул: бот простой, логики минимум, а тащить ради этого целый проект с деплоем — перебор. Вот тут я и вспомнил, что на сервере крутится n8n.

И знаете, это было правильное решение. Вместо вечера написания кода и отладки я потратил пятнадцать минут на перетаскивание нод. Результат тот же, а удовольствия больше. Иногда выгоднее не геройствовать, а выбрать простой путь. Этот принцип я теперь применяю и в других задачах.

Как выглядит сам n8n

Расскажу, чтобы вы представляли. n8n — это веб-интерфейс, где слева панель с нодами, посередине холст для workflow, сверху — кнопки запуска. Ноды можно перетаскивать, соединять стрелками, настраивать в боковой панели. Каждая нода выполняет одну задачу: получить сообщение, проверить текст, отправить ответ.

Мне нравится, что настройки у нод понятные, без программистского жаргона. Даже человек без опыта разберётся, если прочитает пару примеров. А для проверки прямо в интерфейсе есть кнопка Execute — можно гонять workflow и смотреть, какие данные проходят. Это сильно ускоряет отладку.

Где поджидает опасность

Хочу предупредить о паре вещей, которые чуть не оттолкнули меня. Во-первых, n8n требует, чтобы вебхук был доступен из интернета. У меня за nginx стоял прокси, и без настройки таймаутов бот молчал. Если ваш сервер тоже за прокси — сразу проверьте конфиг nginx, сэкономите нервы.

Во-вторых, не забывайте включать Fallback Output в Switch. Без этого галочки все условия после первого проваливаются в никуда, и бот отвечает невпопад. Я на этой галочке потерял полдня. Запомните: Fallback — ваш друг, без него Switch капризничает.

Что умеет мой бот сейчас

Сейчас мой n8n-бот вполне боевой. Отвечает на приветствие списком команд, выдаёт статью про хостинг по запросу, ищет посты по теме через WP REST API. Ещё принимает отзывы и пересылает их мне в личку. И умеет считать статистику по сайту. Всё это — без строчки кода, только ноды.

Не скажу, что он умный, — логика простейшая. Но для задач FAQ и обратной связи этого достаточно. Читатели довольны, я доволен, сервер молчит. А если захочется усложнить — всегда можно добавить ноды. Гибкость на уровне, при этом без программирования.

Плюсы и минусы, которые я заметил

Соберу честно плюсы. Скорость разработки: простой бот за 15 минут. Наглядность: видно весь путь данных. Лёгкость правок: изменил ноду — и всё работает. Бесплатно: n8n в Docker, Telegram API бесплатный. Для прототипов и простых интеграций — идеально.

А теперь минусы. Сложная логика в n8n превращается в паутину из нод. Отладка ветвистых сценариев муторная. И любой нестандартный случай требует Function ноды, где уже код. Так что для простых задач — да, для серьёзных проектов — лучше код. Я это понял на практике.

Стоит ли пробовать n8n

Если вы автоматизируете что-то впервые и боитесь кода — попробуйте n8n. Он снимет страх и покажет, что автоматизация доступна каждому. Даже если потом вы перейдёте на код, базовое понимание workflow пригодится. Я через n8n понял, как думают автоматизации, и это помогло мне и с Python-ботом.

А если вы уже умеете кодить — n8n всё равно стоит иметь в арсенале. Для быстрых задач он экономит часы. У меня два бота, и каждый живёт на своей технологии. Так что не выбирайте «или-или» — берите лучшее от обоих миров.

Как я подключал WP REST API

Отдельно остановлюсь на интеграции с WordPress, потому что это было самое интересное. Чтобы n8n мог запрашивать посты, нужно разрешить доступ к REST API. У меня уже был ключ приложения — в WordPress есть такая штука, Application Passwords. Создал его в профиле, и n8n получил доступ к данным сайта.

Дальше всё просто: HTTP Request нода делает GET-запрос к адресу вида mysurik.ru/wp-json/wp/v2/posts, n8n получает JSON, извлекает заголовки постов и отправляет ссылки в Telegram. Первый раз, когда бот прислал мне реальные ссылки на статьи, я прямо обрадовался: работает, чёрт возьми! Вот она, магия интеграций.

Про форму обратной связи

Расскажу про форму обратной связи, это любимая фишка читателей. Пользователь пишет боту «отзыв [текст]», n8n ловит команду, вытаскивает текст из сообщения и отправляет мне в личку с именем пользователя. Я вижу, кто что написал, и могу ответить. Просто, но как же удобно.

Поначалу я боялся, что меня завалит спамом. Но бот доступен только подписчикам канала, и реальных сообщений немного. А главное — обратная связь стала живой: люди пишут, что им понравилось, что поправить, какие статьи добавить. Раньше такого не было. Бот оживил общение с аудиторией.

Почему я не пожалел о связке

Теперь, оглядываясь, я понимаю, почему не пожалел о том, что сделал двух ботов на разных технологиях. Каждый инструмент силён в своём: Python — в сложной логике и работе с системой, n8n — в быстрых интеграциях с сервисами. Вместе они закрывают все мои задачи, не дублируя друг друга.

И самое главное — я научился выбирать инструмент под задачу, а не тащить всё на одном. Это, пожалуй, ценный навык для любого, кто автоматизирует. Начните с простого, добавляйте сложности по мере роста, и не бойтесь миксовать технологии. Работает — значит, правильно.

Советы по настройке, если соберётесь

Дам пару практических советов, которые сэкономят вам время. Первое: не забывайте про таймаут вебхука за прокси, я уже говорил — это частая причина «молчащего» бота. Второе: включайте Fallback Output в Switch, иначе команды будут теряться. Третье: для длинных ответов режьте сообщения, Telegram имеет лимит в 4096 символов.

И ещё одно: не пытайтесь сделать всё идеально с первого раза. Соберите рабочую версию, попробуйте, а потом улучшайте. Я сначала сделал простого бота на «привет» и «хостинг», а уже потом добавил поиск и отзывы. Так и нервов меньше, и результат виден быстрее. Постепенность — ваш друг.

Сравнение с Python

Для сложных сценариев Python-бот гибче. Но для простых диалогов и интеграций n8n справляется на ура. Если бот нужен за час — делайте в n8n. Если бот будет жить годы и обрастать логикой — пишите код.

Сейчас у меня два бота: один на Python (мониторинг сервера), второй на n8n (FAQ и обратная связь). Работают параллельно, не мешают друг другу.

Ваш комментарий

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