# Блок - группа условий

Группа условий - это своего рода "контейнер" для множества блоков с условиями в схеме чат-бота.&#x20;

<figure><img src="https://content.gitbook.com/content/ZN10WvcXgl30afEjLBp4/blobs/9En9SjbzZLeMBuWoYa6U/image.png" alt=""><figcaption><p>Группа условий</p></figcaption></figure>

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

{% hint style="info" %}
**Внимание!** На количество условий в рамках одной группы условий в шаге ограничений нет.

Максимальное же число групп условий в шаге - не более 10.
{% endhint %}

<figure><img src="https://content.gitbook.com/content/ZN10WvcXgl30afEjLBp4/blobs/eHHJwC3H1xyaCLympgGj/%D0%A1%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82%2024-05-2024%20234754.jpg" alt=""><figcaption><p>Возможные ограничения группы условий</p></figcaption></figure>

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

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

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

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

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

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2FLWSyGUGZrV1MXmq9ttTP%2Fimage.png?alt=media&#x26;token=2f3573dc-6c3b-4f45-88eb-f50fe40c40b2" alt=""><figcaption><p>Пример настройки условного блока</p></figcaption></figure>

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

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

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2FAtRpjcb4tdi9gvwtN2S2%2Fimage.png?alt=media&#x26;token=d52df8ad-1344-4320-ba11-f5b298a8d301" alt=""><figcaption><p>Проверка ответа пользователя</p></figcaption></figure>

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

* Ответ равен
* Ответ не равен
* Ответ содержит
* Ответ не содержит
* Ответ соответствует регулярному выражению
* Ответ - телефон российского формата с 11 цифрами (можно задать с 8, +7 или 7)
* Ответ содержит E-mail
* Ответ - Число
* Ответ меньше числа
* Ответ больше числа
* Ответ содержит стикер
* Ответ содержит фотографию
* Ответ содержит видеозапись
* Ответ содержит аудиозапись
* Ответ содержит документ
* Ответ содержит голосовое сообщение
* Ответ содержит вложения
* Ответ не содержит вложения

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

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

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

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

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

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

### Переменные

Их можно проверять условиями Пользовательская и/или Глобальная переменная.

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

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

### Имя

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

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

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

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

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

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

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

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

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

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

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

### Возраст

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

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

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

У кого вся дата скрыта - считается, их возврат равен 0. У кого только год скрыт - считается что они старше 1970 года.

### Бот

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

* Находится в боте
* Не находится в боте
* Находится в других ботах
* Не находится в других ботах

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

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

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

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

### Метка

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

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

{% hint style="info" %}
**Пример.** Если укажите условие **Имеет метку N**, то будут выбраны все пользователи, которые имеют данную метку на момент проверки.
{% endhint %}

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

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

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

{% hint style="info" %}
**Пример.** Если укажите условие **Подписан на группу N**, то будут выбраны все пользователи, которые подписаны на данную группу на момент проверки.
{% endhint %}

### Рассылка

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

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

{% hint style="info" %}
**Пример.** Если укажите условие **Получал рассылку N**, то будут выбраны все пользователи, получившие данное сообщение на момент проверки.
{% endhint %}

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

### UTM\_SOURCE

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

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

{% hint style="info" %}
**Пример.** Если укажите условие **Имеет UTM\_SOURCE: google**, то будут выбраны все пользователи, которые имеют данную метку на момент проверки.
{% endhint %}

### UTM\_MEDIUM

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

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

{% hint style="info" %}
**Пример.** Если укажите условие **Имеет UTM\_MEDIUM: cpm**, то будут выбраны все пользователи, которые имеют данную метку на момент проверки.
{% endhint %}

### UTM\_CAMPAIGN

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

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

{% hint style="info" %}
**Пример.** Если укажите условие **Имеет UTM\_CAMPAIGN: campaign\_1**, то будут выбраны все пользователи, которые имеют данную метку на момент проверки.
{% endhint %}

### UTM\_CONTENT

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

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

{% hint style="info" %}
**Пример.** Если укажите условие **Имеет UTM\_CONTENT: content\_1**, то будут выбраны все пользователи, которые имеют данную метку на момент проверки.
{% endhint %}

### UTM\_TERM

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

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

{% hint style="info" %}
**Пример.** Если укажите условие **Имеет UTM\_TERM: term\_1**, то будут выбраны все пользователи, которые имеют данную метку на момент проверки.
{% endhint %}

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

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

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

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

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

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

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

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

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

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

* Дней до дня рождения
* Дней до дня рождения меньше равно
* Дней до дня рождения больше равно

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

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

### Состоит в канале ТГ

{% hint style="danger" %}
**Внимание!** Для работы данного условия ваш TG-бот обязательно должен быть добавлен в тот канал TG, факт подписки на который вы планируете проверять. И что не мало важно, ему должны быть выданы полномочия администратора.
{% endhint %}

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

* Состоит в канале
* Не состоит в канале

Проверить можно нахождение в канале, группе или супергруппе. Ссылки на них указываются в следующих форматах: @channelusername, <https://t.me/channelusername> или ID.

### Username

Условие проверяет, указан ли у подписчика Telegram публичный username.

Варианты условия:

* Username указан - у подписчика есть публичный username
* Username не указан - username отсутствует или скрыт

Дополнительные параметры не требуются.

Пример использования:

Условие можно использовать для разделения логики сценария в зависимости от возможности связаться с пользователем по username, например:

* пользователям с username отправлять персональное сообщение
* пользователям без username предлагать написать боту самостоятельно

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

####
