Подсценарии (дочерние сценарии)

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


Когда использовать

  • Переиспользуемые блоки: форма сбора контакта, опрос, оплата — которые вызываются из нескольких мест.
  • Длинные сценарии, которые удобнее редактировать по частям.
  • Модульная архитектура бота.

Создание подсценария

  1. Откройте переключатель сценариев (название текущего сценария в шапке редактора).
  2. Наведите курсор на нужный основной сценарий — появится иконка + (Создать подсценарий).
  3. Нажмите +. Новый подсценарий появится в списке с отступом под родительским.
  4. Нажмите на подсценарий, чтобы открыть его в редакторе и настроить.

Важно: подсценарий необходимо опубликовать отдельно, нажав «Опубликовать» внутри него. Публикация основного сценария не затрагивает подсценарии автоматически.

Быстрое копирование команд в подсценарий

Через контекстное меню на канве можно выбрать действие «Копировать в дочерний сценарий». Оно создаёт новый дочерний сценарий и переносит туда выделенные узлы.

  • Копируются только подходящие для подсценария узлы: например, обычные команды и фреймы с командами внутри.
  • Узлы «Триггер» и «Автосообщение» при таком переносе автоматически пропускаются.
  • Стартовая нода в новом подсценарии сохраняется автоматически. Если её по какой-то причине не было, редактор создаст её сам.
  • После копирования старт нового подсценария автоматически привязывается к первой перенесённой команде, если связь ещё не была настроена.
  • Если вместе с командами выбран фрейм, он тоже переносится в дочерний сценарий вместе с попавшими внутрь командами.

Вызов подсценария из основного сценария

В любой команде основного сценария добавьте кнопку (инлайн или обычную) с действием 🔀 Вызвать подсценарий:

Поле Описание
Подсценарий Выберите нужный подсценарий из списка.
Команда возврата (Опционально) Команда в этом (основном) сценарии, к которой бот вернётся после выхода из подсценария. Если не указана, бот останется на старте подсценария.

При нажатии кнопки бот:

  1. Сохраняет текущее состояние.
  2. Загружает подсценарий и переходит к его стартовой команде.

Дополнительные опции кнопки «Вызвать подсценарий»

Опция Описание
Передавать переменные Перед входом в подсценарий записывает указанные пары ключ/значение в переменные пользователя. Позволяет передать контекст из основного сценария в подсценарий (например, идентификатор выбранного товара).
Обновить текущее сообщение После начала подсценария вместо нового сообщения бот редактирует то сообщение, из которого была нажата кнопка.

Возврат в основной сценарий

В подсценарии добавьте кнопку с действием ↩️ Вернуться в основной сценарий.

Поле Команда возврата заполняется автоматически — оно берётся из кнопки «Вызвать подсценарий» в основном сценарии. Изменять его вручную не нужно в большинстве случаев.

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

При нажатии кнопки бот:

  1. Выходит из подсценария.
  2. Загружает основной сценарий и переходит к указанной команде возврата.

Дополнительные опции кнопки «Вернуться в основной сценарий»

Опция Описание
Передавать переменные Перед возвратом записывает указанные пары ключ/значение в переменные пользователя. Удобно для передачи результата работы подсценария обратно в основной сценарий.
Обновить текущее сообщение После возврата вместо нового сообщения бот редактирует то сообщение, из которого была нажата кнопка возврата.

Важные ограничения

  • Глубина вложенности: только 1 уровень (подсценарий внутри подсценария не поддерживается).
  • Переменные: переменные пользователя общие для основного и дочернего сценария.
  • Команды меню Telegram: в подсценарии недоступна опция «Показывать в меню» — команды меню принадлежат только основному сценарию.
  • Публикация: каждый подсценарий публикуется отдельно. Если подсценарий не опубликован, кнопка вызова не сработает.
  • Меню Telegram при публикации: публикация подсценария не изменяет и не очищает команды меню бота. Меню пересобирается только при публикации основного сценария.

Пример структуры

📋 Основной сценарий
 └ 📋 Сбор контакта        ← подсценарий
 └ 📋 Оплата               ← подсценарий

В основном сценарии кнопка «Оставить контакт» вызывает подсценарий «Сбор контакта». После того как пользователь заполнил форму, кнопка «Готово» в подсценарии возвращает его к команде «Спасибо» в основном сценарии.


Удаление сценария

Удалить сценарий можно прямо из переключателя сценариев в шапке редактора.

  1. Откройте переключатель сценариев.
  2. В нижней части выпадающего меню (под пунктом «Создать новый») нажмите 🗑 Удалить сценарий.
  3. В появившемся диалоговом окне подтвердите удаление.

Что удаляется

  • Сам сценарий со всеми его нодами, блоками и связями.
  • Все подсценарии этого сценария (если удаляется основной сценарий).
  • История версий (снапшоты) сценария и его подсценариев.
  • Состояния пользователей, которые в момент удаления находились внутри сценария.

Опубликованные данные удаляются вместе с черновиком — операция необратима.

Ограничения

  • Если у бота остался только один сценарий, кнопка «Удалить сценарий» не отображается — последний сценарий удалить нельзя.
  • При удалении текущего сценария редактор автоматически переключится:
    • на следующий по списку основной сценарий — если удалялся основной сценарий;
    • на родительский основной сценарий — если удалялся подсценарий.