Локальные переменные
Локальные переменные — это временные переменные, которые существуют только в рамках выполнения текущего триггера. После завершения триггера (включая Глобальный Триггер После) они автоматически удаляются.
Что такое локальные переменные
Локальные переменные — это переменные, которые создаются, изменяются и удаляются в процессе работы триггера.
Ключевые особенности:
| Особенность | Описание |
|---|---|
| Время жизни | С момента создания до завершения триггера (включая Глобальный Триггер После) |
| Область видимости | Только внутри текущего триггера |
| Автоудаление | Удаляются автоматически после завершения триггера |
| Изоляция | Разные триггеры не видят локальные переменные друг друга |
💡 Совет: Используйте локальные переменные для промежуточных вычислений, временного хранения данных из API, формирования сложных структур перед сохранением.
Когда использовать
| Сценарий | Пример |
|---|---|
| Промежуточные вычисления | Собрать JSON из нескольких переменных перед отправкой |
| Кэширование данных в триггере | Сохранить результат HTTP-запроса, чтобы не повторять его |
| Формирование сложных сообщений | Построить многострочный текст из нескольких частей |
| Временные флаги и счётчики | Отслеживание шагов внутри сложного ветвления |
⚠️ Важно: Если данные нужно сохранить между разными вызовами бота (через 5 минут, при следующем сообщении) — используйте облачные переменные.
Доступные реакции
| Реакция | Назначение | Ссылка |
|---|---|---|
| SetVarLocal | Создать или полностью перезаписать локальную переменную | Подробнее |
| AddVarLocal | Изменить значение (прибавить к числу, добавить в массив) | Подробнее |
| DelVarLocal | Полностью удалить локальную переменную | Подробнее |
Сравнение с облачными переменными
| Характеристика | Локальные переменные | Облачные переменные |
|---|---|---|
| Время жизни | До конца триггера | Постоянно (до удаления) |
| Доступность | Только в текущем триггере | В любом триггере |
| Требует загрузки | Нет (доступны сразу после создания) | Да (через GetVarCloud или !{varcloud}) |
| Автоудаление | ✅ Да (автоматически) | ❌ Нет (нужно удалять вручную) |
| Назначение | Временные данные, промежуточные вычисления | Постоянные данные (баланс, настройки) |
| Передача между триггерами | ❌ Нет | ✅ Да |
💡 Совет: Правило большого пальца — если данные нужны только внутри одного обработчика команды, используйте локальные переменные. Если данные нужны позже (при следующем сообщении или через час) — используйте облачные.
Примеры использования
Пример 1: Промежуточное вычисление скидки
Задача: Рассчитать итоговую сумму с учётом скидки 15% и отправить пользователю.
Реакции в триггере:
GetVarCloud→ загружаемcart_total(облачная переменная)SetVarLocal→ название:discount, значение:!{math|${var.person.cart_total} * 0.15}SetVarLocal→ название:final, значение:!{math|${var.person.cart_total} - ${localVar.discount}}SendMessage→ текст:Итого к оплате: ${localVar.final} ₽ (скидка ${localVar.discount} ₽)
Пример 2: Сборка JSON перед отправкой в API
Задача: Собрать данные пользователя в JSON и отправить через HTTP-запрос.
Реакции в триггере (подготовка к SendRequest):
GetVarCloud→ загружаемname,email,phoneSetVarLocal→ название:payload, значение:{"name": "${var.person.name}", "email": "${var.person.email}", "phone": "${var.person.phone}"}SendRequest→ тело запроса:${localVar.payload}
Пример 3: Формирование сложного сообщения
Задача: Собрать отчёт из нескольких переменных.
Реакции в триггере:
GetVarCloud→ загружаемbalance,orders_count,last_order_dateSetVarLocal→ название:report, значение:Ваш баланс: ${var.person.balance} ₽\nКоличество заказов: ${var.person.orders_count}\nПоследний заказ: ${var.person.last_order_date}SendMessage→ текст:${localVar.report}
Пример 4: Кэширование результата макроса
Задача: Случайное приветствие — сгенерировать один раз и использовать в нескольких местах триггера.
Реакции в триггере:
SetVarLocal→ название:greeting, значение:!{random.select|list: Привет!, Здравствуй!, Добрый день!}SendMessage→ текст:${localVar.greeting} ${user.name}SendMessage→ текст:${localVar.greeting} Рады тебя видеть!
💡 Совет: Без локальной переменной макрос
!{random.select}выполнялся бы дважды, и приветствия могли бы быть разными.
Частые ошибки
Ошибка 1: Попытка использовать локальную переменную в другом триггере
Причина: Локальные переменные живут только в рамках одного триггера.
Решение: Используйте облачные переменные (SetVarCloud / GetVarCloud) для данных, которые нужно передавать между триггерами.
Ошибка 2: Использование переменной до её создания
Причина: SetVarLocal не был вызван, но переменная уже используется в ${localVar.xxx}.
Решение: Всегда сначала создавайте переменную через SetVarLocal, затем используйте.
❌ Неправильно:
SendMessage → текст: ${localVar.greeting}
SetVarLocal → название: greeting, значение: Привет
✅ Правильно:
SetVarLocal → название: greeting, значение: Привет
SendMessage → текст: ${localVar.greeting}
Ошибка 3: Путаница с синтаксисом
Причина: Использование !{localvar} (макрос) вместо ${localVar.name} (переменная).
Решение:
- Для доступа к значению:
${localVar.имя} - Макрос
!{...}для локальных переменных не существует
Ошибка 4: Ожидание, что локальная переменная сохранится после ошибки
Причина: При возникновении ошибки в триггере выполнение прерывается, локальные переменные не сохраняются. Решение: Для критичных данных используйте облачные переменные с сохранением на каждом шаге.
Ошибка 5: Излишнее использование DelVarLocal
Причина: Разработчик не знает, что локальные переменные удаляются автоматически.
Решение: В большинстве случаев DelVarLocal не нужен. Используйте его только при явной необходимости (освобождение памяти в очень длинных триггерах, сброс перед переиспользованием имени).
Связанные разделы
| Раздел | Описание |
|---|---|
| Облачные переменные | Постоянное хранение данных между триггерами |
| SetVarLocal | Создание локальной переменной |
| AddVarLocal | Изменение локальной переменной |
| DelVarLocal | Удаление локальной переменной |
| Макрос math | Вычисления для локальных переменных |
| Макрос string | Работа со строками |
🔗 Быстрая навигация
- Вверх
- Когда использовать
- Доступные реакции
- Сравнение с облачными переменными
- Примеры использования
- Частые ошибки
- Связанные разделы