EnotPRO Logo EnotPRO

Локальные переменные

Локальные переменные — это временные переменные, которые существуют только в рамках выполнения текущего триггера. После завершения триггера (включая Глобальный Триггер После) они автоматически удаляются.

Что такое локальные переменные

Локальные переменные — это переменные, которые создаются, изменяются и удаляются в процессе работы триггера.

Ключевые особенности:

Особенность Описание
Время жизни С момента создания до завершения триггера (включая Глобальный Триггер После)
Область видимости Только внутри текущего триггера
Автоудаление Удаляются автоматически после завершения триггера
Изоляция Разные триггеры не видят локальные переменные друг друга

💡 Совет: Используйте локальные переменные для промежуточных вычислений, временного хранения данных из API, формирования сложных структур перед сохранением.

Когда использовать

Сценарий Пример
Промежуточные вычисления Собрать JSON из нескольких переменных перед отправкой
Кэширование данных в триггере Сохранить результат HTTP-запроса, чтобы не повторять его
Формирование сложных сообщений Построить многострочный текст из нескольких частей
Временные флаги и счётчики Отслеживание шагов внутри сложного ветвления

⚠️ Важно: Если данные нужно сохранить между разными вызовами бота (через 5 минут, при следующем сообщении) — используйте облачные переменные.

Доступные реакции

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

Сравнение с облачными переменными

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

💡 Совет: Правило большого пальца — если данные нужны только внутри одного обработчика команды, используйте локальные переменные. Если данные нужны позже (при следующем сообщении или через час) — используйте облачные.

Примеры использования

Пример 1: Промежуточное вычисление скидки

Задача: Рассчитать итоговую сумму с учётом скидки 15% и отправить пользователю.

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

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

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

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

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

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

Пример 3: Формирование сложного сообщения

Задача: Собрать отчёт из нескольких переменных.

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

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

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

Задача: Случайное приветствие — сгенерировать один раз и использовать в нескольких местах триггера.

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

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

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

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

Раздел Описание
Облачные переменные Постоянное хранение данных между триггерами
SetVarLocal Создание локальной переменной
AddVarLocal Изменение локальной переменной
DelVarLocal Удаление локальной переменной
Макрос math Вычисления для локальных переменных
Макрос string Работа со строками

🔗 Быстрая навигация

  • Вверх
  • Когда использовать
  • Доступные реакции
  • Сравнение с облачными переменными
  • Примеры использования
  • Частые ошибки
  • Связанные разделы
© 2025 EnotPRO. Все права защищены.