# Переменные

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

<figure><img src="https://4058588211-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvTd8XmFMqkqZga7zhLuk%2Fuploads%2FBz13PsN2nbDx1kmfXdSI%2Fimage.png?alt=media&#x26;token=832f210c-11fc-4f10-9586-c32a6a6a6d52" alt=""><figcaption><p>Раздел "Переменные" можно открыть в сценарии</p></figcaption></figure>

<figure><img src="https://4058588211-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvTd8XmFMqkqZga7zhLuk%2Fuploads%2FIwgTvu2awTkvVF9uNdPq%2Fimage.png?alt=media&#x26;token=1e99706b-d38f-434e-b3f8-34f4f92cb516" alt=""><figcaption><p>Раздел "Переменные"</p></figcaption></figure>

{% hint style="info" %}
**Переменные** — это **ключи в формате %название\_переменной%**, которые **в тексте сообщения или условии** будут заменены ботом на **значения** переменных.
{% endhint %}

Например, если написать в тексте сообщения **%имя%**, то бот заменит эту переменную на имя пользователя.

Есть два основных типа переменных: специальные и пользовательские.

### Специальные переменные&#x20;

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

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

<figure><img src="https://4058588211-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvTd8XmFMqkqZga7zhLuk%2Fuploads%2FpzDp5ozPeZSAj83EoxDA%2Fimage.png?alt=media&#x26;token=e16f8c4c-168f-44e0-b182-3a51c9fc8e72" alt=""><figcaption></figcaption></figure>

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

Их вы можете создавать и изменять сами. Достаточно нажать кнопку "+Добавить переменную".

<figure><img src="https://4058588211-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvTd8XmFMqkqZga7zhLuk%2Fuploads%2FGBgV5HxF4SdU5yj2FqG0%2Fimage.png?alt=media&#x26;token=be51cf3e-936a-463f-aea2-ba56e4518d7c" alt=""><figcaption></figcaption></figure>

Допустим, это может быть счетчик бонусов %Баллы% или переменная %уже принимал участие%, начальное значение которой "нет", но после определенного действия оно поменяется на "да" и не позволит пользователю еще раз пройти активность.&#x20;

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

### Виды переменных

> **Вложение** - в эту переменную можно сохранить файл: картинку, документ, аудиозапись и т.п.

> **Строка** - слово, фраза, индивидуальный код. К примеру: %статус% = "клиент"

<figure><img src="https://4058588211-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvTd8XmFMqkqZga7zhLuk%2Fuploads%2Fkyp6Ih9Y4kZxEPEbNnqH%2Fimage.png?alt=media&#x26;token=d5bbd92d-28b7-4e67-9fe0-0686d33c7272" alt="" width="265"><figcaption></figcaption></figure>

> **Число** - цифра, с которой можно производить вычисления. Например, пополняемый счетчик бонусов; личный баланс в игре; виртуальная валюта.

<figure><img src="https://4058588211-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvTd8XmFMqkqZga7zhLuk%2Fuploads%2FMHgGwImkxvDAEa50ik8A%2Fimage.png?alt=media&#x26;token=2a2e2113-f181-4270-8e12-d4d6363b0db4" alt="" width="266"><figcaption></figcaption></figure>

> **Флаг** - аналог "галочки" со встроенным значениями "да" и "нет". Пригодится, если вы планируете одноразовую активность.&#x20;
>
> Обратите внимание: если вы работаете с этим типом переменной на SmartQuery, то значения "Флага" будут True или False (с заглавной буквы), например:&#x20;
>
> `%Согласие% == True`

> **Массив** - сборник данных (чисел или строк). \
> Имеет формат: \["элемент 1", "элемент 2", "элемент 3", "элемент 4"] - квадратные скобки, внутри которых каждый элемент записывается в кавычках и следует через запятую.
>
> Массив может хранить промокоды на выдачу, имена участников определенной игры и многие другие полезности :)

> **Словарь** - сборник пар данных ключ-значение.&#x20;
>
> Формат словаря: {"ключ": "значение", "ключ 2": "значение 2"} - фигурные скобки, двойные кавычки для ключей и значений (кроме значений, выраженных числами) и через запятую.

Таким образом, в массив вы можете добавить: «автомобиль, самолет, корабль»; а в *словарь*: «3 автомобиля, 4 самолета, 2 корабля» и менять их количество прямо по ходу цепочки.\
\
Если записывать это в правильном формате, получится так:\
\["автомобиль", "самолет", "корабль"] - в массив.\
{"автомобиль": 3, "самолет": 4, "корабль": 2} - в *словарь*

Для работы с массивами и словарями используйте [smart query](https://docs.smartbotpro.ru/smartquery) - встроенные в бота команды, подобные языку программирования.

[Подробнее о работе со словарями](https://docs.smartbotpro.ru/smartquery/spravochnik-funkcii#rabota-so-slovaryami)

[И о работе с массивами](https://docs.smartbotpro.ru/smartquery/spravochnik-funkcii#rabota-s-massivami)

Переменные позволяют существенно расширить функционал и реализовать практически любую логику действий бота :muscle:&#x20;


---

# 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.smartbotpro.ru/scenarii/peremennye.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.
