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

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

Тип условия вы указываете сразу после создания условия, после сохранения тип условия изменить нельзя.
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. Каждый последующий день промежуток будет смещаться относительно текущего дня.
Датированный период — точный промежуток.
Календарный период — промежуток относительно календарных значений: Сегодня, Текущая неделя, Текущий месяц и так далее. Каждый последующий день промежуток будет смещаться относительно текущего дня, недели, месяца и так далее.
Проверить другого пользователя — позволяет выполнить проверку на основе данных другого пользователя (по Telegram ID или @username).
Действие

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

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

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

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

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

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

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