tgsend.ru
← К документации

Конструктор Telegram-ботов

Как собирать сценарии бота: блоки, Rich Message, медиатека, file_id, HTTP/JSON, переменные и Telegram Stars.

Конструктор собирает сценарий Telegram-бота из блоков на доске. Сценарий начинает работу после /start, команды или другого события, а дальше выполняет блоки по связям. После изменений нажмите «Опубликовать»: черновик сохраняется автоматически, но бот выполняет опубликованную версию.

Как читать доску

  • Событие /start — системный вход в сценарий. Его нельзя удалить, чтобы бот всегда мог начать диалог.
  • Команда — вход после /help, /subscribe, /unsubscribe и других команд. Команды работают после первого /start.
  • Обычная связь default выполняет следующий блок сразу после текущего.
  • Кнопки «Переход по сценарию» создают отдельный выход справа и переводят пользователя по выбранной ветке.
  • URL, Web App, Copy Text и Deep link выполняются в Telegram и сами по себе не двигают сценарий дальше.
  • ПКМ по свободному месту открывает меню добавления блоков; блоки можно выделять группой и переносить вместе.

Сообщение и Rich Message

Обычный блок «Текст + кнопки» подходит для короткого текста, одного или нескольких вложений и инлайн-кнопок. Это быстрый режим для меню, уведомлений и простых сообщений.

Rich Message — отдельный блок с визуальным редактором. Используйте его, когда нужны форматирование, ссылки, rich-документ, фото из медиатеки внутри сообщения и более аккуратная верстка. Не смешивайте его с обычным текстовым блоком, если сообщение должно быть визуально сложным.

  • Текст поддерживает переменные вида {{vars.name}}, {{chat_id}}, {{user_id}}, {{start_payload}}.
  • HTML parse mode подходит для жирного, ссылок и базового форматирования.
  • MarkdownV2 выбирайте только если точно знаете правила экранирования Telegram.

Медиатека и file_id

Для фото и обычных медиа удобнее выбирать файлы из медиатеки. Так пользователь видит свои файлы в интерфейсе, а сервис сам хранит связь с ботом и Telegram file_id.

Поле file_id нужно для тяжелых или специальных файлов: видео, документы, голосовые, кружки, стикеры и другие файлы, которые удобно зарегистрировать через системного бота. Если file_id получен от системного бота, рабочий бот при первой отправке регистрирует файл на себя и дальше использует собственный file_id.

  • Фото — можно отправлять из медиатеки или по file_id.
  • Альбом — 2-10 совместимых медиа; если есть кнопки или несовместимые элементы, отправка станет последовательной.
  • Стикер и кружок не поддерживают подпись в Telegram; текст отправляйте отдельным блоком.
  • Для edit media используется первый файл из вложений блока.

Инлайн-кнопки

  • Переход по сценарию — callback-кнопка. Она создает выход у блока и ждёт нажатия пользователя.
  • Ссылка — открывает внешний URL. Цвет в интерфейсе нужен для визуального дизайна кнопки в конструкторе и предпросмотре.
  • Web App — открывает Telegram Mini App по HTTPS URL.
  • Copy Text — копирует заданный текст в Telegram-клиенте, если клиент поддерживает эту кнопку.
  • Deep link — открывает вашего бота с payload для /start, например promo_{{user_id}}.

Переменные

Переменные подставляются перед выполнением блока. Системные значения доступны почти везде: {{chat_id}}, {{user_id}}, {{message_id}}, {{start_payload}}. Пользовательские значения хранятся в vars.

  • Блок «Ввод» сохраняет ответ пользователя в переменную, например name. После этого используйте {{vars.name}}.
  • Блок «Запросить контакт» сохраняет подтвержденный телефон в vars.phone, vars.contact_phone, vars.contact_verified.
  • HTTP-блок может сохранить поля ответа в vars через JSON mapping.
  • Оплаты пишут vars.payment_status, vars.payment_amount, vars.payment_currency, vars.payment_invoice_uid и другие payment_* поля.
Привет, {{vars.name}}!
Ваш chat_id: {{chat_id}}
Стартовый payload: {{start_payload}}

HTTP и JSON

HTTP-блок нужен для интеграции с внешними сервисами: CRM, таблицами, складом, собственной API. Укажите URL, метод, заголовки, авторизацию и body. В body можно использовать переменные сценария.

{
  "chat_id": "{{chat_id}}",
  "name": "{{vars.name}}",
  "phone": "{{vars.phone}}"
}

Если включить сохранение JSON ответа, тело ответа попадет в http_json. Через mapping можно положить нужные поля в vars и использовать дальше в условиях или сообщениях.

  • Path user.name можно сохранить в vars.name.
  • Path order.id можно сохранить в vars.order_id.
  • После HTTP используйте ветки OK/Ошибка: например, при ошибке показать пользователю запасной текст.
  • Для условий по числам используйте операторы «число больше» и «число меньше».

Оплаты и Telegram Stars

Блок «Оплата» отправляет Telegram invoice. Для Stars используйте валюту XTR и оставьте provider token пустым. Для обычных валют нужен provider token платежного провайдера.

  • UID события создается автоматически и должен быть уникальным внутри сценария.
  • После успешной оплаты сценарий продолжится по ветке paid.
  • Ошибки, отмены и возвраты идут по веткам failed, canceled, refunded.
  • Журнал оплат доступен кнопкой «Оплаты» в верхней панели конструктора.
  • В payload можно добавлять переменные, например order_{{user_id}}.

Редактирование и действия Telegram

  • «Изменить сообщение» может менять текст, подпись, кнопки или медиа текущего сообщения.
  • «Удалить сообщение» обычно ставят после нажатия кнопки, чтобы убрать старое меню.
  • «Ответ на кнопку» показывает toast или alert после callback-кнопки.
  • «Закрепить» и «Открепить» требуют прав бота в чате.
  • «Чеклист» работает только через Telegram Business connection и требует business_connection_id.

История версий

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

Практический шаблон сценария

  • /start → согласие на обработку данных → согласие на рассылки.
  • После согласий → «Ввод» имени и «Запросить контакт».
  • После контакта → HTTP-запрос в CRM и условие по результату.
  • Если OK → Rich Message с персональным текстом и кнопками.
  • Если нужна оплата → блок «Оплата» и ветка paid с выдачей файла, ссылки или сообщения.
  • В конце → блок «Конец», если диалог больше не должен ждать ответа.