Telegram Bot

Підключіть свого Telegram бота до Fainflow для автоматизації повідомлень, медіа, чатів та взаємодії з користувачами.


Крок 1 — Створіть бота у BotFather

  1. Відкрийте @BotFather у Telegram та почніть діалог.
  2. Надішліть /newbot.
  3. Введіть відображуване ім'я бота (наприклад, Мій Support Bot). Користувачі бачать це ім'я.
  4. Введіть username бота — він має:
    • закінчуватись на bot (регістронезалежно)
    • бути 5–32 символи завдовжки
    • містити лише латиницю, цифри та підкреслення
    • бути унікальним у Telegram
  5. BotFather надішле вам токен бота, наприклад: 123456789:ABC-DEF1234ghIkl-zyx57W2v1u123ew11.

⚠️ Зберігайте токен у таємниці. Будь-хто з токеном може керувати ботом. Не коміть його, не діліться. Якщо токен витік — надішліть /revoke у BotFather, щоб скасувати його та згенерувати новий.

Крок 2 — Налаштуйте бота (опціонально, але рекомендовано)

У BotFather надішліть /mybots → виберіть свого бота:

НалаштуванняЩо робить
Edit Bot → Edit AboutТекст «about» у профілі бота
Edit Bot → Edit DescriptionОпис, який показується до /start
Edit Bot → Edit BotpicАватар
Bot Settings → Group PrivacyDisable, якщо бот має читати всі повідомлення у групах (а не лише команди)
Bot Settings → Allow Groups?Чи можна додавати бота до груп
Edit CommandsСписок команд у меню (наприклад, /start - почати, /help - допомога)

Group Privacy — найпоширеніша пастка: за замовчуванням бот у групах отримує лише команди та відповіді. Якщо ваш flow потребує всі повідомлення — встановіть Disable.

Крок 3 — Підключіть у Fainflow

  1. У Fainflow відкрийте Підключення → натисніть + Нове підключення → виберіть Telegram Bot.
  2. Заповніть форму:
ПолеОпис
Bot TokenТокен з BotFather (Крок 1.5)
NameБудь-яка назва, яку ви хочете бачити у Fainflow (наприклад, Support Bot)
DescriptionКоротке призначення, наприклад: Автоматизація підтримки клієнтів

⚠️ Реальний бот визначається токеном, а не Name. Name — це просто мітка всередині Fainflow. Якщо ви вставите токен від @bot_A, а підключення назвете Мій Trading Bot, підключення все одно слухатиме @bot_A — повідомлення, надіслані до @trading_bot, ніколи не дійдуть до flow. Після збереження картка підключення показує реальний @username, який Fainflow визначив через getMe — переконайтеся, що це саме той бот, з яким ви плануєте спілкуватися.

  1. Натисніть Connect.

Fainflow перевірить токен викликом getMe та збереже username, first_name і capabilities бота. У разі успіху ви побачите Bot connected! з @username бота.

New Connection

Крок 4 — Перевірте підключення

Після збереження відкрийте картку підключення у Connections. Ви побачите:

  • Bot username — клікабельний, відкриває бота у Telegram
  • Bot token — замаскований (видно лише перші 8 символів)
  • Capabilitiescan_join_groups, can_read_all_group_messages, supports_inline_queries

Кнопка Test connection перевіряє, що бот живий і webhook зареєстрований. Якщо webhook відсутній або зламаний — натисніть Re-register webhook.

Крок 5 — Зміна токена / редагування підключення

Ви можете змінити токен бота без видалення підключення — усі прив'язані flows продовжать працювати.

  1. Відкрийте Connections → клікніть на картку підключення.
  2. Поруч із замаскованим Bot Token натисніть Edit.
  3. Заповніть будь-яку комбінацію:
    • New Bot Token — залиште порожнім, щоб залишити поточний. Вставте новий, щоб замінити.
    • Name — відображувана назва у Fainflow.
    • Description — короткий опис.
  4. Натисніть Save.

Якщо ви ввели новий токен, Fainflow повторно перевіряє його через getMe і оновлює bot_id, username, first_name та capabilities бота. Збереження не вдасться, якщо Telegram відхилить токен, тож помилкова вставка не зламає підключення.

💡 Коли змінювати токен? Якщо ви виконали /revoke у BotFather (бо старий токен витік) — згенеруйте новий, вставте сюди й натисніть Save. Не потрібно перестворювати підключення чи перебудовувати flows.


Event: Bot Update

Спрацьовує, коли ваш бот отримує будь-яке оновлення — повідомлення, callbacks, медіа, запити на вступ тощо.

Виходи

ВихідТипОпис
updateTypestringmessage, callback_query, edited_message тощо
chatIdstringTelegram ID чату
chatTypestringprivate, group, supergroup, channel
fromIdstringTelegram user ID відправника
fromUsernamestring@username відправника
firstNamestringІм'я відправника
lastNamestringПрізвище відправника
messageIdstringTelegram ID повідомлення
textstringТекстовий вміст повідомлення
messageKindstringТип оновлення — див. нижче
captionstringПідпис медіа-повідомлення (фото/відео/документ)
hasMediastring"true", якщо є файл для завантаження
fileIdstringfile_id вкладення — передайте у Download File
memberStatusstringДля join/leave: новий статус членства
targetUserIdstringДля join/leave: ID користувача, якого це стосується
datestringUnix-мітка часу
rawjsonПовний необроблений об'єкт оновлення Telegram

Реагувати не лише на текст — messageKind

Єдина подія Bot Update спрацьовує на кожне оновлення. Щоб обробити конкретний тип — фото, голосове чи додавання до каналу — розгалужуйтесь за messageKind через функцію If (або Continue If) одразу після події.

messageKind — одне зі значень:

text, photo, video, animation, voice, audio, document, sticker, location, contact, poll, dice, callback, inline, join, leave, member_update, join_request, edited, unknown.

Рецепти:

  • Обробити фотоIf messageKind == "photo" → використайте fileId з функцією Download Filecaption для тексту).
  • Обробити голосовеIf messageKind == "voice"fileId це аудіофайл.
  • Бота додали до каналу/групиIf messageKind == "join"chatId це чат, до якого додали, memberStatus — ваша нова роль.
  • Будь-яке медіаIf hasMedia == "true".

Окремі тригери подій (простіші флоу)

Якщо флоу цікавить лише один тип оновлення, оберіть окремий тригер замість Bot Update + фільтр — тоді флоу спрацює лише на цей тип:

Text Message · Photo Received · Video Received · Voice Message · Audio Received · Document Received · Sticker Received · Location Received · Contact Received · Poll Received · Added to Chat/Channel

Вони несуть ті самі виходи, що й Bot Update (включно з fileId/caption), тож напр. Photo Received → Send PhotofileId) взагалі не потребує If. На одному боті можна тримати кілька флоу — по одному на тригер. Bot Update беріть, коли один флоу має бачити все.


Приклад: Ехо-бот

Простий бот, який відповідає тим самим текстом, який отримав.

Event: Bot Update
  ↓
Action: Send Message
  chatId ← chatId (з event)
  text   ← text (з event)

Echo Bot

Bot repeats the message it receives

Telegram Bot

Bot Update

message
userID
date

Telegram Bot

Send Message

chatId
userID
text
message

Приклад: AI Чат-бот

Бот, який відповідає за допомогою OpenAI GPT.

AI Chat Bot

Bot responds using OpenAI GPT

Telegram Bot

Bot Update

message
userID

OpenAI

Send Prompt

model
gpt-4
instructions
You are a helpful assistant
input
message
responseText

Telegram Bot

Send Message

chatId
userID
text
responseText

Доступні дії

ДіяОпис
Send MessageНадіслати текст у чат
Send ReplyВідповісти на конкретне повідомлення
Edit MessageРедагувати текст існуючого повідомлення
Delete MessageВидалити повідомлення
Send Photo / Video / Document / Audio / VoiceНадіслати медіа
Send Media GroupНадіслати кілька медіа одразу
Send Inline KeyboardПовідомлення з inline-кнопками
Send MenuПовідомлення з reply-клавіатурою
Send Chat ActionПоказати індикатор «друкує...»
Answer CallbackВідповісти на натискання inline-кнопки
Set CommandsВстановити список команд бота
Get Chat / Get Chat MemberОтримати інформацію про чат або учасника
Ban Member / Unban MemberМодерувати користувачів
Approve Join / Decline JoinОбробити запит на вступ

Дивіться Дії Telegram Bot для детального опису входів/виходів.


Поради

  • Використовуйте Continue If, щоб обробляти лише певні типи повідомлень (текст, команди, фото).
  • Використовуйте If/Else з text contains /start, щоб вітати нових користувачів.
  • Зберігайте токен бота у Vault, якщо потрібно викликати Telegram API напряму з функції — посилайтеся на нього як {{vault.BOT_TOKEN}}.
  • Тримайте Group Privacy увімкненим, якщо вашому flow не потрібні всі повідомлення — Telegram обмежує ботів, які тягнуть більше даних, ніж їм потрібно.

Усунення неполадок

СимптомПричина / Розв'язання
Flow ніколи не спрацьовує, хоча все налаштовано правильноТокен у підключенні належить іншому боту, не тому, кому ви пишете. Відкрийте картку підключення та подивіться на поле Bot Username — це бот, якого Fainflow слухає (визначив через getMe). Якщо це не той бот — натисніть Edit і вставте правильний токен. Поле Name — лише мітка, важливий лише токен.
Invalid bot token — Telegram rejected itТокен невірний, скопійований з пробілами або відкликаний. Отримайте новий у BotFather.
Бот не реагує на повідомлення у групіУвімкнено Group Privacy. У BotFather: /mybots → Bot Settings → Group Privacy → Disable.
Бот працював і раптом переставWebhook міг бути перезаписаний іншим сервісом або відкликаний. Відкрийте підключення та натисніть Re-register webhook.
409 — bot already connectedЦей бот уже прив'язаний до іншого підключення у вашому обліковому записі. Видаліть старе або використайте іншого бота.
Бот бачить /start, але не звичайні повідомленняТа ж проблема Group Privacy — вимкніть її у BotFather.
Conflict: terminated by other getUpdates request у логах потокуІнший процес уже опитує цього бота. Зазвичай це означає, що той самий токен бота підключений десь іще (інший акаунт Fainflow, self-hosted інстанс або інша інтеграція). Відключіть бота в іншому місці, щоб опитував лише один споживач.