SetVarLocal
SetVarLocal — создаёт локальную переменную или перезаписывает значение существующей.
📝 Назначение
Локальные переменные существуют только в рамках текущего триггера. После завершения триггера (включая Глобальный Триггер После) они автоматически удаляются.
Когда использовать:
- Для временного хранения промежуточных данных
- Для передачи данных между реакциями внутри одного триггера
- Для формирования сложных структур (JSON, массивов) перед отправкой
- Для кэширования результата макроса, чтобы использовать его несколько раз
⚠️ Важно: Если переменная с таким названием уже существует в текущем триггере, её значение будет полностью заменено. Для изменения значения (прибавления к числу, добавления в массив) используйте
AddVarLocal.
⚙️ Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| Название | Строка | ✅ Да | Имя переменной (латиница, кириллица, цифры, _, -). Максимум 256 символов вместе с путём. В пути можно подставлять переменные и макросы — см. Путь из переменной |
| Значение | Любой | ❌ Нет | Значение для сохранения. Можно оставить пустым — получится нулевое значение выбранного типа |
| Тип данных | Выбор | ✅ Да | Ровно один из восьми: bool, number, float, string, json, yaml, array json, array yaml |
📊 Поддерживаемые типы данных
| Тип | Описание | Пример значения | Результат |
|---|---|---|---|
| bool | Логический | true, false, 1, 0 |
true / false |
| number | Целое число | 100 |
целое число |
| float | Дробное число | 10.5 |
число с плавающей точкой |
| string | Текст | Привет |
строка |
| json | Объект в формате JSON | {"key": "value"} |
объект |
| yaml | Объект в формате YAML | key: value |
объект |
| array json | Список в формате JSON | [1, 2, 3] |
список |
| array yaml | Список в формате YAML | - 1 |
список |
⚠️ Важно: Автоопределения типа нет — тип выбирается всегда, и значение должно ему соответствовать. Текст
abcс типом number или число3с типом array json приведут к ошибке, и переменная не будет установлена.
🅾️ Пустое значение
Значение можно не указывать: при создании реакции есть кнопка «Пропустить», при редактировании — «Сбросить». Пустое значение превращается в нулевое значение выбранного типа.
| Тип | Что будет записано |
|---|---|
| bool | false |
| number | 0 |
| float | 0 |
| string | Пустая строка |
| json, yaml | Пустой объект {} |
| array json, array yaml | Пустой список [] |
💡 Совет: Это удобный способ подготовить переменную перед накоплением — например, создать пустой список, чтобы дальше пополнять его через
AddVarLocal.
⚠️ Частая ошибка: Пустым считается и результат подстановки. Если в значении написано
${var.local.чего-нет}, подстановка даст пустоту, и переменная получит нулевое значение, а не ошибку. Проверяйте имена переменных внутри значения, а для подстраховки указывайте запасное значение:${var.local.count|default: 0}.
📍 Доступ к значению
После создания переменной значение становится доступным по пути:
${var.local.название}
Примеры:
${var.local.user_data} # объект
${var.local.cart_total} # число
${var.local.message_text} # строка
${var.local.items.0} # первый элемент массива
🧪 Примеры использования
Пример 1: Сохранение промежуточного вычисления
Задача: Рассчитать скидку и итоговую сумму.
Реакции в триггере:
GetVarCloud→ загружаемcart_total(облачная переменная)SetVarLocal→ название:discount, значение:!{math|${var.person.cart_total} * 0.15}SetVarLocal→ название:final, значение:!{math|${var.person.cart_total} - ${var.local.discount}}SendMessage→ текст:Итого: ${var.local.final} ₽ (скидка ${var.local.discount} ₽)
Пример 2: Сборка JSON перед отправкой в API
Задача: Подготовить данные для HTTP-запроса.
Реакции в триггере (подготовка к SendRequest):
GetVarCloud→ загружаемname,email,phoneSetVarLocal→ название:payload, значение:{"name": "${var.person.name}", "email": "${var.person.email}", "phone": "${var.person.phone}"}SendRequest→ тело запроса:${var.local.payload}
Пример 3: Кэширование результата макроса
Задача: Случайное приветствие — один раз сгенерировать, дважды использовать.
Реакции в триггере:
SetVarLocal→ название:greeting, значение:!{random.select|list: Привет!, Здравствуй!, Добрый день!}SendMessage→ текст:${var.local.greeting} ${user.name}!SendMessage→ текст:${var.local.greeting} Рады тебя видеть!
💡 Без локальной переменной: макрос
!{random.select}выполнился бы дважды, и приветствия могли бы быть разными.
Пример 4: Сборка многострочного сообщения
Задача: Сформировать отчёт из нескольких частей.
Реакции в триггере:
GetVarCloud→ загружаемbalance,orders_count,last_orderSetVarLocal→ название:report, значение:📊 Ваш отчёт:\nБаланс: ${var.person.balance} ₽\nЗаказов: ${var.person.orders_count}\nПоследний заказ: ${var.person.last_order}SendMessage→ текст:${var.local.report}
Пример 5: Создание массива
Задача: Сохранить список ID товаров для последующей обработки.
Реакции в триггере:
SetVarLocal→ название:product_ids, значение:[123, 456, 789], тип: array json- (Далее можно перебирать массив или передавать в HTTP-запрос)
💡 Совет: Чтобы начать с пустого списка, оставьте значение пустым (кнопка «Пропустить») и выберите тип array json — получится
[].
🔄 Сравнение с SetVarCloud
| Характеристика | SetVarLocal | SetVarCloud |
|---|---|---|
| Время жизни | До конца триггера | Постоянно (до удаления) |
| Доступность | Только в текущем триггере | В любом триггере |
| Требует загрузки | Нет (доступна сразу) | Да (GetVarCloud) |
| Автоудаление | ✅ Да | ❌ Нет |
| Назначение | Временные данные | Постоянные данные (баланс, настройки) |
💡 Совет: Если данные нужны только внутри текущего обработчика — используйте
SetVarLocal. Если данные нужно сохранить между разными вызовами бота — используйтеSetVarCloud.
🔗 Связанные реакции
| Реакция | Назначение |
|---|---|
| AddVarLocal | Изменить значение (прибавить, добавить в массив) |
| DelVarLocal | Удалить локальную переменную |
| SetVarCloud | Создать облачную переменную |
🔗 Связанные разделы
| Раздел | Описание |
|---|---|
| Локальные переменные | Общая информация о локальных переменных |
| Облачные переменные | Постоянное хранение данных между триггерами |
| Макрос math | Вычисления для значений |
| Макрос random | Генерация случайных значений |