EnotPRO Logo EnotPRO

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: Сохранение промежуточного вычисления

Задача: Рассчитать скидку и итоговую сумму.

Реакции в триггере:

  1. GetVarCloud → загружаем cart_total (облачная переменная)
  2. SetVarLocal → название: discount, значение: !{math|${var.person.cart_total} * 0.15}
  3. SetVarLocal → название: final, значение: !{math|${var.person.cart_total} - ${var.local.discount}}
  4. SendMessage → текст: Итого: ${var.local.final} ₽ (скидка ${var.local.discount} ₽)

Пример 2: Сборка JSON перед отправкой в API

Задача: Подготовить данные для HTTP-запроса.

Реакции в триггере (подготовка к SendRequest):

  1. GetVarCloud → загружаем name, email, phone
  2. SetVarLocal → название: payload, значение: {"name": "${var.person.name}", "email": "${var.person.email}", "phone": "${var.person.phone}"}
  3. SendRequest → тело запроса: ${var.local.payload}

Пример 3: Кэширование результата макроса

Задача: Случайное приветствие — один раз сгенерировать, дважды использовать.

Реакции в триггере:

  1. SetVarLocal → название: greeting, значение: !{random.select|list: Привет!, Здравствуй!, Добрый день!}
  2. SendMessage → текст: ${var.local.greeting} ${user.name}!
  3. SendMessage → текст: ${var.local.greeting} Рады тебя видеть!

💡 Без локальной переменной: макрос !{random.select} выполнился бы дважды, и приветствия могли бы быть разными.

Пример 4: Сборка многострочного сообщения

Задача: Сформировать отчёт из нескольких частей.

Реакции в триггере:

  1. GetVarCloud → загружаем balance, orders_count, last_order
  2. SetVarLocal → название: report, значение: 📊 Ваш отчёт:\nБаланс: ${var.person.balance} ₽\nЗаказов: ${var.person.orders_count}\nПоследний заказ: ${var.person.last_order}
  3. SendMessage → текст: ${var.local.report}

Пример 5: Создание массива

Задача: Сохранить список ID товаров для последующей обработки.

Реакции в триггере:

  1. SetVarLocal → название: product_ids, значение: [123, 456, 789], тип: array json
  2. (Далее можно перебирать массив или передавать в HTTP-запрос)

💡 Совет: Чтобы начать с пустого списка, оставьте значение пустым (кнопка «Пропустить») и выберите тип array json — получится [].

🔄 Сравнение с SetVarCloud

Характеристика SetVarLocal SetVarCloud
Время жизни До конца триггера Постоянно (до удаления)
Доступность Только в текущем триггере В любом триггере
Требует загрузки Нет (доступна сразу) Да (GetVarCloud)
Автоудаление ✅ Да ❌ Нет
Назначение Временные данные Постоянные данные (баланс, настройки)

💡 Совет: Если данные нужны только внутри текущего обработчика — используйте SetVarLocal. Если данные нужно сохранить между разными вызовами бота — используйте SetVarCloud.

🔗 Связанные реакции

Реакция Назначение
AddVarLocal Изменить значение (прибавить, добавить в массив)
DelVarLocal Удалить локальную переменную
SetVarCloud Создать облачную переменную

🔗 Связанные разделы

Раздел Описание
Локальные переменные Общая информация о локальных переменных
Облачные переменные Постоянное хранение данных между триггерами
Макрос math Вычисления для значений
Макрос random Генерация случайных значений
© 2025 EnotPRO. Все права защищены.