Создаём Telegram-бота без кода с помощью сервиса n8n

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

Сделать такого бота мне помог новый сервис автоматизации n8n. Это аналог Zapier, только более мощный, наглядный и бесплатный. Составляем цепочки действий, подцепляем токены, настраиваем триггеры и всё это без кода. На установку и создание бота у меня ушло меньше часа.

У n8n есть 3 опции:

  • Cloud: если не хочется разбираться с установкой, а просто начать пользоваться сервисом. Эта опция платная, от 20$ в месяц.
  • Desktop: ты просто устанавливаешь на компьютер приложение и бесплатно пользуешься. Но чтобы ваша автоматизация работала постоянно, компьютер придется всегда держать включенным.
  • Self-hosted: бесплатная опция, которая потребует свой сервер, домен и немножко кода.

У меня есть свой сервер на Digital Ocean (вот рефка — по ней вам 100$), поэтому я выбрал третью опцию. На сайте n8n есть инструкция для DO, с помощью которой я установил сервис минут за 15.

Дальше расскажу, как я сделал телеграм-бота-пересыльщика.

1. Создаем нового бота через бота BotFather и сохраняем токен

2. Идём в Notion, создаём новую интеграцию и сохраняем токен. Дальше эту интеграцию цепляем к странице с базой данной, в которую хотим сохранять записи.

3. Перейдём к n8n. Скачиваем мой шаблон, который уже содержит нужную нам автоматизацию. Не буду рассказывать про инструментарий — сами поиграетесь.

4. В левой части экрана, в разделе Workflows, кликаем по Import from file и находим шаблон. Вы увидите уже готовую цепочку действий.

5. Теперь нужно завести ключи для токенов бота и ноушена. Кликаем New в Credentials. В поиске находим Telegram API. В Access Token вставляем токен нашего бота из BotFather. В левом углу можно задать имя. Сохраняем.

6. То же самое теперь делаем для ноушена, только теперь ищем Notion API.

7. Возвращаемся к цепочке. Дважды кликаем на Telegram Trigger. Это узел, который слушает не отправлено ли в бота сообщение. В Credential for Telegram API выбираете ваш токен. Если нажать на Listen For Event и отправить в бота сообщение, то оно уже должно появиться справа, в зоне Output. Там же можно увидеть айди вашего личного Telegram-аккаунта — он понадобится на следующем шаге.

8. Переходим к следующему узлу — If. Здесь мы проверяем, что написавший в бота аккаунт, это ваш аккаунт. В Value 2 нужно вставить ваш айди из прошлого шага. В Value 1 мы получаем айди аккаунта, написавшего в бота, и сравниваем его с Value 2.

9. Если значения не равны, то мы попадаем на узел Telegram Message. Этот узел отправит ответное сообщение любому пользователю, кроме вас. В поле Text можно отредактировать это сообщение.

10. Если в бота написали вы, то сценарий перейдет к узлу Notion Action. Дважды кликаем на Notion Action и в Credential for Notion API выбираем токен, который создавали на шаге 6.

11. В поле Database Name or ID у вас должна появиться БД со страницы, подключенной на шаге 2. В блоке Properties, в поле Key Name or ID выбираем свойство, в которое будет попадать запись, скорее всего это будет Name.

12. Всё настроено! Чтобы проверить, нажимаем на кнопку Execute Workflow и пишем в бота. На узлах цепочки должны появиться зеленые галочки, а в вашем ноушене — новая запись.

13. Чтобы автоматизация работала постоянно, нужно в правом верхнем углу переключить в Active. Если переключатель неактивен, то нужно просто задать имя канваса в левом верхнем углу и сохранить.

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

Зарегаться в сервисе n8n можно по моей ссылке, за что вам абсолютно ничего не будет! Для него вам вероятно понадобится сервак, и вот тут моя ссылка на Digital Ocean даст вам 100$.