# Условный оператор IF

#### **Проверка, что переменная не пуста**

{% hint style="info" %}
Чтобы убедиться, что переменная содержит значение (то есть она не `None` и не является пустой строкой), нужно проверить, что она **НЕ равно** пустой строке.

**Правильная формула:**

`"#{value}" != ""`

Это важно для проверки данных, например чтобы убедиться, что ответ был получен от внешнего API-запроса, прежде чем продолжить.
{% endhint %}

### IF()

<details>

<summary>Описание</summary>

**if(condition, value\_if\_true, value\_if\_false)**

**condition** - триггер

**value\_if\_true** - значение, если True

**value\_if\_false** - значение, если False

{% hint style="warning" %}
Максимальная длина выражения: 2000 символов
{% endhint %}

</details>

<details>

<summary>Пример</summary>

Давайте разберём несколько примеров:

SILENCEDAYS\_2 = if(SILENCEDAYS\_2 == 1, 1, 0). В этом случае, если переменная `SILENCEDAYS_2` существует и равна 1, её значение остаётся 1. Если она не существует или имеет другое значение, ей будет присвоено 0. Это полезно перед выполнением математических операций, чтобы защититься от пустых или неопределённых значений переменных.

ClientName = if(ClientName == 1, P1, if(ClientName == 2, P2, if(ClientName == 3, P3, 7))), где P1, P2, P3 — переменные.&#x20;

Если ClientName равно 1, то будет присвоено значение P1;\
если ClientName равно 2, то будет присвоено значение P2;\
если ClientName равно 3, то будет присвоено значение P3;\
в противном случае будет присвоено значение 7.

Как видите, можно использовать вложенные конструкции if. Это полезно, когда вы хотите научить бота рассчитывать сумму заказа, где цена за единицу зависит от количества:

Order\_Amount = round(if(Quantity >=100, if(Quantity >=200, if(Quantity >=300, if(Quantity >=400, if(Quantity >=500, if(Quantity >=1000, if(Quantity >=2000, if(Quantity >=3000, if(Quantity >=5000, 25\*Quantit&#x79;*, 30\**&#x51;uantity), 35\*Quantit&#x79;*), 40\**&#x51;uantity), 45\*Quantit&#x79;*), 50\**&#x51;uantity), 55\*Quantit&#x79;*), 60\**&#x51;uantity), 65\*Quantit&#x79;*), "Не могу вычислить... Где-то в вашем заказе произошла ошибка. Пожалуйста, начните сначала.")* \* 100) / 100

<div data-with-frame="true"><figure><img src="/files/f9edb3dcc564c01949e5acc2961c65a0fdf3089a" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/5da516c4e8247c59800922b44900a70d177938ab" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/2c5458505025eeac8a36dc881fd769bdbb636f38" alt=""><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Пример кода для копирования</summary>

<pre><code>SILENCEDAYS_2 = if(SILENCE_DAYS_2 == 1, 1, 0)
ClientName = if(ClientName == 1, Р1, if(ClientName == 2, Р2, if(ClientName == 3, Р3, 7)))
<strong>Order_Amount = round(if(Quantity >=100, if(Quantity >=200, if(Quantity >=300, if(Quantity >=400, if(Quantity >=500, if(Quantity >=1000, if(Quantity >=2000, if(Quantity >=3000, if(Quantity >=5000, 25*Quantity, 30*Quantity), 35*Quantity), 40*Quantity), 45*Quantity), 50*Количество), 55*Quantity), 60*Quantity), 65*Quantity), "Не могу вычислить... Где-то в вашем заказе произошла ошибка. Пожалуйста, начните сначала.")  * 100) / 100
</strong></code></pre>

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/ru/chatbot/functions/kalkulyator/conditional.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
