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

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

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

Правило — блок в Условиях, содержащий Проверку и Действие.
Проверка — добавьте проверку, чтобы указать что именно бот будет проверять. Например проверку подписки на канал.
Действие — добавьте действие, чтобы указать что бот должен сделать если проверка успешная. Например если подписка на канал найдена.

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

Проверка — набор параметров, на наличие которых проверяется пользователь вызвавший Условие. Имеет два типа:
1. Все проверки — Действия из Правила будут выполнены, только при прохождении всех Проверок
2. Любая проверка — Действия из Правила будут выполнены, при прохождении одной любой Проверки.
Список доступных проверок:
- Конструктор:
- Вызов команды или условия
- Вызов Мини-приложения
- Наличие ответа на Формы ввода
- Результат тестирования в Формах ввода
- Модерация:
- Наличие категорий
- Наличие подписки
- Блокировка в ресурсе
- Сценарии:
- Запущенные сценарии
- Количество запусков сценариев
- Магазин:
- Куплены товары
- Сумма покупок
- Количество заказов
- Платежи:
- Рекуррентный платеж
- Оплаченные платежи
- Сумма оплаченных платежей
- Вход:
- Переход по ссылкам
- Переход по ссылкам
- Триггеры:
- Получены триггеры
- Получены триггеры
- Диалоги:
- Активный диалог
- Активный диалог
- Переменные:
- Значение переменной
- Значение переменной
- Google Sheets:
- Проверить строку
- Проверить строку
- NocoDB:
- Проверить строку
- Проверить строку
- Битрикс24:
- Проверерка лида
- Проверка сделки
- Проверка контакта
- AmoCRM:
- Проверка лида
- Проверка контакта
- Другое:
- Telegram Premium
- Дата и время
- Голос для ресурсов (Boost)
- Без проверки
Для некоторых проверок можно задать дополнительные опции:

- Задать количество — проверяет сколько раз была выполнена функция, например: “Вызов команды или условия” без опции “Задать количество” проверяет был ли вызов хотя бы 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:
- Создать строку
- Обновить строку
- Очистить строку
- Удалить строку
- Создать лист
- Удалить лист
- NocoDB:
- Создать строку
- Обновить строку
- Очистить строку
- Удалить строку
- Битрикс24:
- Действие с лидом
- Создать лид
- Изменить статус лида
- Изменить поля лида
- Удалить лид
- Действия со сделкой
- Создать сделку
- Изменить этап сделки
- Изменить поля сделки
- Удалить сделку
- Действие с контактом
- Создать контакт
- Удалить контакт
- AmoCRM:
- Действие с лидом
- Создать лид
- Изменить статус лида
- Изменить поля лида
- Действие с контактом
- Создать контакт
- Другое:
- Поставить реакцию
- Отправить уведомление
- Удалить сообщение пользователя
- Открепить все сообщения
- Отправить запрос
- Без действия
Кнопка-условие
Разберём отличия типа Кнопки-условия от типа Обычное условие.
Главное функциональное отличие кнопки-условия от обычного условия в том, что проверка в ней выполняется до отправки команды с кнопкой: до отправки система определяет название кнопки и её действие по заданным правилам, и пользователю сразу показывается уже готовая кнопка с соответствующим поведением. В обычном же условии проверка и выполнение действия происходят только после нажатия кнопки.
Так же Кнопка-условие в основном используется для того, чтобы создать видимость/исчезновения кнопки или название кнопки в зависимости от условия, во всем остальном все функции будут такие же как и при создании обычного условия.
Кнопку-условие можно вызвать только нажатием на инлайн-кнопку.
Создание кнопки-услoвия

Создайте условие и выберите Кнопка-условие, далее нажмите Применить.

Задайте необходимые проверки и действия для кнопки-условия.
В отличии от условия дополнительно имеется:
- Настройка названия кнопки, для тех случаев, если название должно меняться в зависимости от результата проверки.
- Действие - Скрыть кнопку, чтобы создать исчезновение кнопки.
После создания всех проверок сохраните кнопку-условие нажав на пустую область в конструкторе.

Далее выберите любую команду или создайте новую, в которой вы хотите добавить кнопку-условие.
Создайте блок, например текстовый блок, как на примере, или любой другой блок, где есть возможность добавить "Инлайн клавиатуру"

После того как вы выбрали Инлайн клавиатуру, в настройках кнопки выберите действие "Кнопка-условие" → укажите название созданной кнопки-условия → сохраните.

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

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