В данной статье разберём возможности сущности Условия и её подтипов: Обычное условие и Кнопка-условие.

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

1. Обычное условие — условие, которое можно вызвать также, как и команду (по названию, переходом, кнопкой и другими способами).
2. Кнопка-условие — условие, которое определяет настройки инлайн-кнопки. С данным типом условия можно настроить связь только через действие в инлайн-кнопке “Кнопка-условие”.

Правило — блок в Условиях, содержащий Проверки и Действия.

Исключающее правило — последнее Правило в Условии, состоящее только из Действий, применяется в случае, когда все предшествующие Правила не прошли Проверки.

Проверка — набор параметров, на наличие которых проверяется пользователь вызвавший Условие. Имеет два типа:
1. Все проверки — Действия из Правила будут выполнены, только при прохождении всех Проверок
2. Любая проверка — Действия из Правила будут выполнены, при прохождении одной любой Проверки.
Проверки:
- Конструктор:
- Вызов команды или условия
- Наличие ответа на Формы ввода
- Результат тестирования в Формах ввода
- Оплаченные платежи
- Сумма оплаченных платежей
- Модерация:
- Наличие категорий
- Наличие подписки
- Блокировка в ресурсе
- Сценарии:
- Запущенные сценарии
- Количество запусков сценариев
- Магазин:
- Куплены товары
- Сумма покупок
- Количество заказов
- Вход:
- Переход по ссылкам
- Переход по ссылкам
- Триггеры:
- Получены триггеры
- Получены триггеры
- Диалоги:
- Активный диалог
- Активный диалог
- Переменные:
- Значение переменной
- Значение переменной
- Google Sheets:
- Проверить строку
- Проверить строку
- Другое:
- Дата и время
- Без проверки
Для некоторых проверок можно задать дополнительные опции:
- Задать количество — проверяет сколько раз была выполнена функция, например: “Вызов команды или условия” без опции “Задать количество” проверяет был ли вызов хотя бы 1 раз, если включить “Задать количество” и указать “больше или равно 3”, то проверка будет пройдена только, если пользователь вызвал выбранные команды 3 и более раз.
- Задать период — проверяет была ли выполнена функция в указанный промежуток. Типы промежутков:
- Количественный период — определяет промежуток относительно текущего часа, дня и месяца, например: Если сегодня 10 января, а выбран тип “Количество дней” со значением "5", то выполнение функции будет проверяться с 5 января 00:00 по 10 января 23:59. Каждый последующий день промежуток будет смещаться относительно текущего дня.
- Датированный период — точный промежуток.
- Календарный период — промежуток относительно календарных значений: Сегодня, Текущая неделя, Текущий месяц и так далее. Каждый последующий день промежуток будет смещаться относительно текущего дня, недели, месяца и так далее.
- Количественный период — определяет промежуток относительно текущего часа, дня и месяца, например: Если сегодня 10 января, а выбран тип “Количество дней” со значением "5", то выполнение функции будет проверяться с 5 января 00:00 по 10 января 23:59. Каждый последующий день промежуток будет смещаться относительно текущего дня.
- Проверить другого пользователя — позволяет выполнить проверку на основе данных другого пользователя (по Telegram ID или @username).

Действие — набор функций, которые будут выполнены для пользователя вызвавшего Условие. Имеет два типа:
1. Все действия — каждое действие будет выполнено по очерёдно.
2. Случайное действие — будет выполнено одно случайное Действие. Можно задать вероятность выполнения каждого Действия.
Действия:
- Конструктор:
- Отправить команду или условие
- Отправить случайную команду из группы команд
- Модерация:
- Изменить категорию
- Действие в ресурсах
- Сценарии:
- Изменить сценарии
- Изменить сценарии
- Магазин:
- Очистить корзину
- Очистить корзину
- Диалоги:
- Действия с диалогом
- Действия с диалогом
- Переменные:
- Изменить переменную
- Очистить переменную
- Триггеры:
- Отправить триггеры
- Отправить триггеры
- Статистика:
- Очистить статистику
- Очистить статистику
- Google Sheets:
- Создать строку
- Обновить строку
- Очистить строку
- Удалить строку
- Создать лист
- Удалить лист
- Другое:
- Удалить обычную клавиатуру
- Отправить уведомление
- Удалить сообщение пользователя
- Открепить все сообщения
- Отправить запрос
- Без действия
Кнопка-условие
Разберём отличия типа Кнопки-условия от типа Обычное условие.

Кнопку-условие можно вызвать только нажатием на инлайн-кнопку.
Важно! В настройках инлайн-кнопки с действием “Кнопка-условие” нельзя задать название, потому что название задаётся в настройках “Кнопки-условия” отдельно для каждого Правила.

Для создания связи с Кнопкой-условия создайте инлайн-клавиатуру в любой команде, добавьте кнопку, выберите действие для кнопки “Кнопка-условие” и укажите название Условия с типом Кнопка-условие (другие типы отображаться не будут).

В отличие от Обычного условия, в Условии-кнопке у настроек Действия появляются дополнительные опции такие же, как у инлайн-кнопки, что позволяет задать разное название и действие для разных ситуаций.
Данный тип условия позволяет задать название кнопки и её действие исходя из заданных Правил, то есть до отправки команды содержащей инлайн-клавиатуру и Кнопку-условие — будет происходить проверка, в зависимости от результатов этой проверки пользователю будет отображена кнопка с соответствующим действием, например:
В Условии с типом кнопка-условие задано два правила, первое правило с проверкой на активный сценарий "Сценарий 1", второе правило "исключающее" и оно будет выполнено, если ни одно другое правило не прошло проверки, в конкретном примере исключающее правило будет выполнено при отсутствии пользователя в сценарии "Сценарий 1".
Для первого правила зададим действие "Ссылка" и название кнопки "Ссылка на ваш подарок", для исключающего правила зададим действие "Переход к команде" и назовём кнопку "Регистрация".
Если пользователь с активным сценарием "Сценарий 1" вызовет команду содержащую инлайн-клавиатуру с кнопкой-условием, то кнопка у него будет называться "Ссылка на ваш подарок" и содержать ссылку, а если вызовет пользователь без сценария "Сценарий 1", то у него на том же месте будет отображена кнопка "Регистрация" и вести к другой команде.