# Переменные в ботах

{% content-ref url="../peremennye" %}
[peremennye](https://help.senler.ru/senler/kanaly/telegram/peremennye)
{% endcontent-ref %}

### Установка переменной

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

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2FHMV2kMmYIQSDiRqhOFTE%2Fimage.png?alt=media&#x26;token=8dd61f5a-8af7-4715-845f-47d7d6584ed9" alt=""><figcaption><p>Установка переменных</p></figcaption></figure>

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

### Сохранение ответа пользователя в переменную

{% hint style="warning" %}
**Внимание!** Шаг с сохранением ответа в переменную должен всегда идти от пункта **"Ответ на сообщение"**.
{% endhint %}

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2FUzRiZvMHU0HfyEcd5Eet%2Fimage.png?alt=media&#x26;token=cf03a879-2480-4629-b34e-3b7114aba30d" alt=""><figcaption><p>Сохранение ответа участника бота в переменную</p></figcaption></figure>

### Использование переменной в сообщении

![Вставка переменной в сообщение](https://content.gitbook.com/content/ZN10WvcXgl30afEjLBp4/blobs/Stir2flbXJFgdGRDi09y/image.png)

### Использование переменной в условии

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2FXh2FGTJoa1hcfPFptcJF%2Fimage.png?alt=media&#x26;token=c503ef53-4b01-4537-8d3e-96d7a681424a" 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%2F4qzroHw0SuwuwZ7PTSVX%2Fimage.png?alt=media&#x26;token=8c9ea133-5332-47be-acc1-6e952fe5460b" alt=""><figcaption><p>Пример использования функции floor</p></figcaption></figure>

Список поддерживаемых математических функций:

`sin`, `cos`, `tan`, `cot`, `sind`, `cosd`, `tand`, `arcsin`, `arccos`, `arctan`, `arccot`, `exp`, `log`, `ln`, `lg`, `sqrt`, `sinh`, `cosh`, `tanh`, `coth`, `arsinh`, `arcosh`, `artanh`, `arcoth`, `abs`, `sgn`, `round`, `floor`, `ceil`, `! - факториал`, `!! - двойной факториал`, `^ - возведение в степень`

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

**Пример 1.** Прибавить 1 к переменной "a".

```
{%a%}+1
```

**Пример 2.** Округлить результат деления переменной "a" на 3 до ближайшего целого.

```
round({%a%}/3)
```

**Пример 3.** Округлить переменную "a" в меньшую сторону.

```
floor({%a%})
```

**Пример 4.** Округлить переменную "a" в большую сторону.

```
ceil({%a%})
```

**Пример 5.** Вычислить остаток от деления переменной "a" на 3.

```
{%a%} - (3*floor({%a%}/3))
```
