# Блок - условие

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

{% hint style="info" %}
**Важно:** блоки **«Условие»** используются внутри блока **«Группа условий»**. То есть все условия добавляются **внутрь** группы условий и могут объединяться логикой **И / ИЛИ**.
{% endhint %}

Условные блоки позволяют выполнить проверку одного или нескольких условий и в зависимости от результата вести подписчика по одной из веток.&#x20;

{% hint style="warning" %}
**Внимание!** Условные блоки не ожидают никаких действий. Например, если указать условие Прочитанность какого-нибудь сообщений в боте, то условный блок не будет ждать, пока пользователь прочитает, а сразу пойдет по ветке - Нет.
{% endhint %}

При добавлении условного блока сначала надо выбрать:&#x20;

* должен ли подписчик соответствовать одновременно всем условиям (это значение по умолчанию)
* или какому-нибудь одному из условий

Затем в одном блоке можно добавить несколько условий.

![Пример настройки условного блока](https://content.gitbook.com/content/ZN10WvcXgl30afEjLBp4/blobs/AsCEvU3nCDqokhNYKPuh/image.png)

### Ответ на сообщение

{% hint style="warning" %}
**Внимание!** Данные условия работают только после пункта **Ответ на сообщение**.
{% endhint %}

![Проверка ответа пользователя](https://content.gitbook.com/content/ZN10WvcXgl30afEjLBp4/blobs/80XrZY6zfyF3jhd6b2ws/image.png)

#### Проверка ответа пользователя

Возможные варианты проверки:

* **Ответ равен**
* **Ответ не равен**
* **Ответ содержит**
* **Ответ не содержит**
* **Ответ соответствует регулярному выражению**
* **Ответ — телефон российского формата**
* **Ответ содержит E-mail**
* **Ответ — Число**
* **Ответ меньше числа**
* **Ответ больше числа**
* **Ответ содержит стикер**
* **Ответ содержит фотографию**
* **Ответ содержит видеозапись**
* **Ответ содержит аудиозапись**
* **Ответ содержит документ**
* **Ответ содержит голосовое сообщение**
* **Ответ содержит вложения**
* **Ответ не содержит вложения**

{% hint style="info" %}
При сравнении текстов регистр не учитывается.
{% endhint %}

{% hint style="info" %}
Даже в неактивном состоянии бот собирает ответы пользователей и нажатия на кнопки. При активации бота учтет эти действия.
{% endhint %}

{% hint style="warning" %}
**Внимание!** Бот не получает измененную версию ответа, если пользователь отредактировал ответ.
{% endhint %}

> **Пример.** Если укажите условие **Ответ равен: да**, то будут выбраны все пользователи, которые отправили сообщение `да` в ответ на сообщение бота.\
> **Пример.** Если укажите условие **Ответ содержит: заказ**, то будут выбраны все пользователи, чьё сообщение содержит слово `заказ`.\
> **Пример.** Если укажите условие **Ответ содержит фотографию**, то будут выбраны все пользователи, отправившие фото в ответ на сообщение бота.\
> **Пример.** Если укажите условие **Ответ не содержит вложения**, то будут выбраны пользователи, которые отправили только текст без вложений.

### Реакция на сообщение

Условие позволяет проверить, поставил ли подписчик реакцию на сообщение бота.

**Возможные варианты проверки:**

* **Содержит реакцию**
* **Не содержит реакцию**

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

> **Пример.** Если укажите условие **Содержит реакцию ❤️**, то будут выбраны все пользователи, которые поставили реакцию ❤️ на сообщение бота.\
> **Пример.** Если укажите условие **Не содержит реакцию 👍**, то будут выбраны все пользователи, которые не ставили реакцию 👍 на сообщение бота.

### Пользовательская переменная

Условие позволяет проверить значение **пользовательской переменной** подписчика в текущем канале.

Сначала выберите переменную из списка или нажмите **«Создать новую переменную»**.

**Возможные варианты проверки:**

* **Переменная равна**
* **Переменная не равна**
* **Переменная меньше**
* **Переменная больше**
* **Переменная имеет значение**
* **Переменная не имеет значения**
* **Переменная содержит значение**
* **Переменная не содержит значение**
* **Переменная соответствует регулярному выражению**

Для проверок, где требуется сравнение, введите значение в поле **«Введите значение»**.

> **Пример.** Если укажите условие **Переменная равна: 1**, то будут выбраны все пользователи, у которых переменная имеет значение `1` на момент проверки.\
> **Пример.** Если укажите условие **Переменная содержит значение: заказ**, то будут выбраны все пользователи, у которых значение переменной содержит слово `заказ`.\
> **Пример.** Если укажите условие **Переменная имеет значение**, то будут выбраны все пользователи, у которых переменная заполнена.

### Глобальная переменная

Условие позволяет проверить значение **глобальной переменной**. Глобальные переменные доступны во всех каналах аккаунта и используются для хранения общих данных.

Сначала выберите глобальную переменную из списка или нажмите **«Создать новую переменную»**.

**Возможные варианты проверки:**

* **Переменная равна**
* **Переменная не равна**
* **Переменная меньше**
* **Переменная больше**
* **Переменная имеет значение**
* **Переменная не имеет значения**
* **Переменная содержит значение**
* **Переменная не содержит значение**
* **Переменная соответствует регулярному выражению**

Для проверок, где требуется сравнение, введите значение в поле **«Введите значение»**.

> **Пример.** Если укажите условие **Переменная равна: paid**, то будут выбраны все пользователи, у которых глобальная переменная имеет значение `paid`.\
> **Пример.** Если укажите условие **Переменная соответствует регулярному выражению**, то будут выбраны все пользователи, значение переменной которых подходит под заданный шаблон.

### Пол

Возможные варианты проверки:

* Женский
* Мужской

> **Пример.** Если укажите условие **Женский**, то будут выбраны все пользователи женского пола.<br>

### Имя

Возможные варианты проверки:

* Имя равно
* Имя не равно
* Имя содержит
* Имя не содержит

> **Пример.** Если укажите условие **Имя содержит: иван**, то будут выбраны все пользователи, чьё имя содержит `иван` (регистр не учитывается).

### **Время последнего контакта**

Данное условие позволит проверить, была ли отправка сообщения из рассылки или чат-бота за определенное время, и если нет, то выслать конкретное сообщение.

Возможные варианты настройки:

Рассылка/бот - если оставить поле пустым, без указания конкретных рассылки или бота, то выполнится проверка в целом на отправленное сообщение через выбранную сущность.

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

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

Время контакта более - если после проверяемого сообщения прошло более указанного времени.

Время контакта менее - если после проверяемого сообщения прошло менее указанного времени.

{% hint style="info" %}
Но также, как и с остальными условиями, есть нюанс. Оно проверит лишь раз, и может не выполниться, если не соответствует выставленным настройкам. В этом случае поможет цикл, например, раз в час, если нужно подождать, пока пользователь получит конкретное сообщение.&#x20;
{% endhint %}

> **Пример.** Если укажите условие **Время контакта более: 24 часа**, то будут выбраны пользователи, у которых не было контакта более 24 часов после выбранной рассылки/бота.<br>

### Возраст

{% hint style="info" %}
Информация берется из личного кабинета, поэтому перед тестированием убедитесь, что в карточке подписчика находится нужное значение.
{% endhint %}

Возможные варианты проверки:

* Возраст равен
* Возраст не равен
* Возраст меньше равно
* Возраст больше равно
* Возраст указан
* Возраст не указан

{% columns %}
{% column width="50%" %}
У кого вся дата скрыта — считается их возраст равен **0**.<br>
{% endcolumn %}

{% column width="50%" %}
У кого только год скрыт — считается что они старше **1970 года**.
{% endcolumn %}
{% endcolumns %}

> **Пример.** Если укажите условие **Возраст больше равно: 18**, то будут выбраны все пользователи старше или равные 18 годам.<br>

### География

Возможные варианты проверки:

* Страна
* Город

### Состоит в сообществе

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

{% hint style="warning" %}
**Внимание!** Показывается список сообществ, которые подключены у руководителя.
{% endhint %}

* Состоит в сообществе
* Не состоит в сообществе

> **Пример.** Если укажите условие **Состоит в сообществе: N**, то будут выбраны пользователи, которые состоят в выбранном сообществе на момент проверки.<br>

### Бот

Возможные варианты проверки:

* Находится в боте
* Не находится в боте
* Находится в каком-либо боте
* Не находится ни в одном боте

{% hint style="warning" %}
**Внимание!** Если укажите условие "Находится в боте", то оно сработает если пользователь находится на выбранном шаге или находился там ранее.
{% endhint %}

> **Пример.** Если укажите условие **Находится в боте: X**, то будут выбраны пользователи, которые находятся в этом боте или находились в нём ранее.<br>

### Сообщения в боте

Возможные варианты проверки:

* Прочитал сообщение в шаге
* Не прочитал сообщение в шаге
* Перешел по ссылке в сообщении шага
* Не перешел по ссылке в сообщении шага

> **Пример.** Если укажите условие **Прочитал сообщение в шаге: N**, то будут выбраны пользователи, которые прочитали сообщение этого шага.<br>

### Метки

Возможные варианты проверки:

* Имеет метку
* Не имеет метку
* Имеет любую метку
* Без меток

> **Пример.** Если укажите условие **Имеет метку N**, то будут выбраны все пользователи, которые имеют данную метку на момент проверки.

### Группа подписчиков

Возможные варианты проверки:

* Подписан на группу
* Не подписан на группу
* Подписан на любую группу
* Без группы

> **Пример.** Если укажите условие **Подписан на группу N**, то будут выбраны все пользователи, которые подписаны на данную группу на момент проверки.

### Рассылка

Возможные варианты проверки:

* Получал рассылку
* Не получал рассылку
* Прочитал рассылку
* Не прочитал рассылку
* Ошибка при получении рассылки
* Перешел по ссылке в рассылке
* Не перешел по ссылке в рассылке

> **Пример.** Если укажите условие **Прочитал рассылку N**, то будут выбраны все пользователи, прочитавшие данное сообщение на момент проверки.

{% hint style="warning" %}
**Внимание!** Отправленные сообщения хранятся 12 месяцев. Потом данные условия не будут работать корректно.
{% endhint %}

### UTM\_SOURCE

Возможные варианты проверки:

* Имеет UTM\_SOURCE
* Не имеет UTM\_SOURCE
* Имеет любое UTM\_SOURCE
* Без UTM\_SOURCE

> **Пример.** Если укажите условие **Имеет UTM\_SOURCE: google**, то будут выбраны все пользователи, которые имеют данную метку на момент проверки.

### UTM\_MEDIUM

Возможные варианты проверки:

* Имеет UTM\_MEDIUM
* Не имеет UTM\_MEDIUM
* Имеет любое UTM\_MEDIUM
* Без UTM\_MEDIUM

> **Пример.** Если укажите условие **Имеет UTM\_MEDIUM: cpm**, то будут выбраны все пользователи, которые имеют данную метку на момент проверки.

### UTM\_CAMPAIGN

Возможные варианты проверки:

* Имеет UTM\_CAMPAIGN
* Не имеет UTM\_CAMPAIGN
* Имеет любое UTM\_CAMPAIGN
* Без UTM\_CAMPAIGN

> **Пример.** Если укажите условие **Имеет UTM\_CAMPAIGN: campaign\_1**, то будут выбраны все пользователи, которые имеют данную метку на момент проверки.

### UTM\_CONTENT

Возможные варианты проверки:

* Имеет UTM\_CONTENT
* Не имеет UTM\_CONTENT
* Имеет любое UTM\_CONTENT
* Без UTM\_CONTENT

> **Пример.** Если укажите условие **Имеет UTM\_CONTENT: content\_1**, то будут выбраны все пользователи, которые имеют данную метку на момент проверки.

### UTM\_TERM

Возможные варианты проверки:

* Имеет UTM\_TERM
* Не имеет UTM\_TERM
* Имеет любое UTM\_TERM
* Без UTM\_TERM

> **Пример.** Если укажите условие **Имеет UTM\_TERM: term\_1**, то будут выбраны все пользователи, которые имеют данную метку на момент проверки.

### REF

Условие позволяет проверить значение параметра **REF**, с которым пользователь был подписан (например, через ссылку с реферальной меткой).

**Возможные варианты проверки:**

* **Имеет ref**
* **Не имеет ref**
* **Имеет любое ref**
* **Без ref**

Если выбран вариант **«Имеет ref»** или **«Не имеет ref»**, укажите значение в поле **«Введите REF»**.

> **Пример.** Если укажите условие **Имеет ref: partner\_1**, то будут выбраны все пользователи, которые имеют ref `partner_1` на момент проверки.

### REF\_SOURCE

Условие позволяет проверить значение параметра **REF\_SOURCE** — источник, с которого пользователь был подписан.

**Возможные варианты проверки:**

* **Имеет ref\_source**
* **Не имеет ref\_source**
* **Имеет любое ref\_source**
* **Без ref\_source**

Если выбран вариант **«Имеет ref\_source»** или **«Не имеет ref\_source»**, укажите значение в поле **«Введите REF\_SOURCE»**.

> **Пример.** Если укажите условие **Имеет ref\_source: vk\_ads**, то будут выбраны все пользователи, которые имеют ref\_source `vk_ads` на момент проверки.

### Текущее московское время

Возможные варианты проверки:

* Текущее время меньше равно
* Текущее время больше равно

### Текущая дата

Возможные варианты проверки:

* Дата равна
* Дата меньше равно
* Дата больше равно

### Текущий день недели

Выберите дни недели, с которыми будет сравнен текущий день на момент проверки.

### Осталось до дня рождения

{% hint style="info" %}
Информация берется из личного кабинета, поэтому перед тестированием убедитесь, что в карточке подписчика находится нужное значение.
{% endhint %}

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

### Осталось до окончания подписки

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

### Онлайн

{% hint style="warning" %}
**Внимание!** При большой нагрузке ВКонтакте возвращает ошибку, не гарантируется стабильная работа этой функции.
{% endhint %}

Проверяется статус пользователя в социальной сети ВК.

Возможные варианты проверки:

* Подписчик онлайн
* Подписчик не онлайн
* Был онлайн (+ указать время, например пользователь был онлайн в течение 5 минут на момент проверки условия)
* Не был онлайн (+ указать время, например пользователь не был онлайн в течение 24 часов на момент проверки условия)

### Приватность профиля

Условие позволяет проверить приватность страницы пользователя ВКонтакте.

**Возможные варианты проверки:**

* **Профиль открыт**
* **Профиль закрыт**

> **Пример.** Если укажите условие **Профиль закрыт**, то будут выбраны пользователи с закрытым профилем ВКонтакте.\
> **Пример.** Если укажите условие **Профиль открыт**, то будут выбраны пользователи с открытым профилем.
