Бот в Telegram: создаём и подключаем к n8n

Ассистент будет жить в Telegram: вы пишете ему, он отвечает, утром присылает брифинг. Для этого нужен бот: отдельный контакт в Telegram, которым управляет ваш n8n. Бот бесплатный, создаётся за 5 минут через служебного бота Telegram. Главное в этом уроке касается безопасности: по умолчанию боту может написать любой, кто найдёт его в поиске.

Чему научитесь в этом уроке:
• создать бота через BotFather и сохранить его токен в n8n;
• сделать так, чтобы ассистент отвечал только вам;
• понимать, почему бот иногда молчит или отвечает на старое сообщение.

Шаг 1. Создаём бота у BotFather

BotFather это официальный служебный бот Telegram для создания ботов (справка Telegram). Ищите его в Telegram по имени @BotFather: у настоящего рядом с именем синяя галочка. Ботов с похожими именами без галочки не трогайте.

  1. Откройте чат с @BotFather и нажмите Start (или отправьте /start).
  2. Отправьте команду /newbot.
  3. BotFather спросит имя — это то, что видно в списке чатов. Можно по-русски: «Ассистент Ивана».
  4. Затем он спросит адрес бота (username). Только латиница, обязательно на конце bot: IvanAssistBot. Адрес должен быть свободен во всём Telegram.
  5. BotFather ответит «Done! Congratulations on your new bot» и пришлёт токен — длинную строку вида 1234567890:AAH…. Это ключ от вашего бота.
Диалог с BotFather: команда /newbot, ответ с вопросом об имени, имя «Ассистент Ивана», вопрос об адресе, адрес IvanAssistBot, ответ «Done! Congratulations on your new bot» с токеном, скрытым серой плашкой.
Токен как ключ от квартиры. Кто знает токен, может писать от имени бота и читать, что ему присылают. Не пересылайте его в чатах и не публикуйте на скриншотах. Если токен утёк, откройте чат с @BotFather, нажмите кнопку Open слева от поля ввода, выберите бота и нажмите Revoke: старый токен перестанет работать, и вы получите новый. Там же кнопка Copy копирует действующий токен, если вы его потеряли.

Шаг 2. Сохраняем токен в n8n

  1. В n8n: Personal → Credentials → Create credential.
  2. В поиске наберите Telegram, выберите Telegram API, нажмите Continue.
  3. Вставьте токен в поле Access Token и нажмите Save. n8n проверит токен: появится зелёная надпись об успешном подключении.

Шаг 3. Узел, который ловит ваши сообщения

В сценарии первым ставится узел Telegram Trigger. Это триггер из урока 0.3, он будит сценарий, когда боту пришло сообщение. Создайте новый сценарий, нажмите +, найдите Telegram Trigger, выберите учётные данные из шага 2, а в поле Trigger On выберите Message. Остальные узлы добавим в уроке 2.5.

Как это работает изнутри. Когда вы пишете боту, Telegram сам отправляет сообщение по адресу вашего n8n. Это вебхук из урока 0.3. Поэтому адрес должен быть доступен из интернета по HTTPS: в облаке он уже такой, на своём сервере его дал шаг 6 урока 2.2b.

Шаг 4. Ассистент отвечает только вам

Найти бота в поиске Telegram может кто угодно. Если не ограничить доступ, чужой человек напишет вашему ассистенту и получит ответ, а в модуле 3 ассистент будет знать ваш календарь и почту. Поэтому в узле Telegram Trigger ограничиваем, от кого принимать сообщения.

  1. Узнайте свой числовой номер в Telegram. Нажмите в узле Telegram Trigger Execute step (n8n начнёт ждать сообщение) и напишите боту любое слово. В выводе узла справа найдите поле message → from → id: это ваш номер, например 123456789.
  2. В том же узле в разделе Additional Fields нажмите Add Field и выберите Restrict to User IDs. Впишите туда свой номер. Если ассистентом будут пользоваться сотрудники, добавьте их номера через запятую.
  3. Проверьте: попросите коллегу написать боту. Сценарий на его сообщение запускаться не должен.

Три особенности, о которых лучше знать заранее

  • Тестовый запуск ловит одно сообщение. Кнопка «Execute workflow» включает ожидание ровно одного сообщения. Хотите проверить ещё раз — нажмите её снова. После перезагрузки страницы ожидание само не включается.
  • Сообщения не теряются, а ждут. Если написать боту, когда n8n его не слушает, Telegram подержит сообщение у себя и отдаст, как только n8n начнёт слушать. Поэтому ассистент может «вдруг» ответить на сообщение, отправленное полчаса назад.
  • Один бот — один триггер. n8n прямо предупреждает: у одного бота одновременно может работать только один узел Telegram Trigger. Два сценария на одного бота — заведите второго бота. По той же причине тестовый и рабочий адрес мешают друг другу. У бота может быть только один адрес для сообщений. Пока сценарий опубликован (кнопка Publish), тестовый запуск из редактора не получает сообщений, и наоборот. Для экспериментов снимайте сценарий с публикации или заведите второго, тестового бота (документация n8n).

Если не получилось

  • BotFather пишет «Sorry, this username is already taken». Адрес занят: добавьте к нему город, год или инициалы — IvanOmskAssistBot.
  • BotFather пишет «Sorry, this username is invalid». В адресе есть русские буквы, пробелы или нет bot на конце. При подготовке урока адрес с подчёркиваниями тоже получил такой ответ, а латиница без подчёркиваний с окончанием Bot прошла сразу.
  • n8n не принимает токен. Скопирован не целиком: в нём обязательно есть двоеточие, и он длиннее 40 символов. Скопируйте сообщение BotFather заново.
  • Ошибка «An HTTPS URL must be provided for webhook». У n8n на своём сервере нет адреса с HTTPS. Вернитесь к шагу 6 урока 2.2b.
  • Нажал «Execute workflow», написал боту — тишина. Сценарий опубликован, и сообщение ушло рабочему адресу. Снимите публикацию или посмотрите вкладку Executions — запуск будет там.

Контрольный вопрос. Руководитель случайно отправил скриншот с токеном бота в общий рабочий чат. Что делать?

АУдалить сообщение из чата, этого достаточно
БОтозвать токен в BotFather кнопкой Revoke, получить новый и заменить его в учётных данных n8n
ВСоздать нового бота и удалить старый сценарий
ГНичего: токен без пароля от n8n бесполезен

Подсказка: Удалённое сообщение могли успеть прочитать. Что делает с токеном кнопка Revoke в BotFather?

На курсе задания проверяются автоматически. Подобрать курс

Контрольный вопрос. Зачем в узле Telegram Trigger заполнять поле Restrict to User IDs?

АЧтобы бот работал быстрее
БЧтобы ассистент отвечал только вам и сотрудникам, а не любому, кто найдёт бота
ВЧтобы бот не появлялся в поиске Telegram
ГЭто обязательное поле, без него n8n не сохранит узел

Подсказка: Вспомните, кто может найти бота в поиске и что ассистент будет знать в модуле 3.

На курсе задания проверяются автоматически. Подобрать курс

Контрольный вопрос. Ассистент ответил на сообщение, которое вы отправили час назад, когда n8n был выключен. Почему?

Аn8n сломался и отправляет ответы с задержкой
БTelegram подержал сообщение у себя и отдал, когда n8n снова начал слушать
ВБот отвечает раз в час по расписанию
ГКто-то другой отправил то же сообщение

Подсказка: Вспомните вторую особенность из урока.

На курсе задания проверяются автоматически. Подобрать курс

Задание. МИССИЯ «Мой бот только для меня». Создайте бота у BotFather, сохраните токен в n8n, поставьте узел Telegram Trigger и ограничьте его своим номером в поле Restrict to User IDs. Приложите два скриншота: (1) узел Telegram Trigger с заполненным полем Restrict to User IDs; (2) вывод узла после вашего тестового сообщения, где видно поле message → from → id. Токен на скриншотах не должен быть виден. Принято, если: на скриншоте 1 поле Restrict to User IDs заполнено; номер в нём совпадает с from → id на скриншоте 2; токена на скриншотах нет.

Подсказка: Номер — это число без букв, обычно 8–10 цифр. Не путайте его с номером чата или сообщения.

✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.

На курсе задания проверяются автоматически. Подобрать курс

Что дальше

Бот создан и слушает только вас. В уроке 2.5 соединим его с моделью и проведём первый разговор.

Итог:
• у вас есть бот, его токен сохранён в n8n, и вы знаете, как отозвать токен при утечке;
• ассистент принимает сообщения только с вашего номера;
• вы понимаете, почему тестовый запуск ловит одно сообщение и почему бот может ответить на старое.

← Назад  ·  ↑ В начало урока  ·  ⌂ В начало курса  ·  Вперёд →

Школа Виктора Комлева