EnotPRO Logo EnotPRO

DelVarCloud

DelVarCloud — полностью удаляет облачную переменную и все её данные.

📝 Назначение

Используется для:

  • Очистки устаревших данных пользователя
  • Сброса состояния после завершения сценария
  • Удаления временных переменных с истёкшим сроком жизни
  • Очистки глобальных счётчиков при сбросе статистики

🔴 Критически важно: Операция необратима. Восстановить удалённую переменную можно только повторным сохранением через SetVarCloud или AddVarCloud.

⚙️ Параметры

Параметр Тип Обязательный Описание
Тип переменной Выбор ✅ Да person, member, chat, global, dynamic
Название Строка ✅ Да Имя переменной для удаления (максимум 64 символа)
ID пользователя Integer ❌ Нет Для типа person. По умолчанию — текущий пользователь
ID чата Integer ❌ Нет Для типов member и chat. По умолчанию — текущий чат

🧪 Примеры

Пример 1: Сброс временного состояния после завершения формы

Задача: Пользователь прошёл многошаговую форму. После финиша нужно удалить временные данные.

Реакция DelVarCloud в триггере «Финиш формы»:

  • Тип: person
  • Название: temp_form_data

Результат: Переменная temp_form_data удалена.

Пример 2: Очистка одноразового бонуса после получения

Задача: Пользователь получил приветственный бонус. После начисления бонус нужно удалить, чтобы нельзя было получить повторно.

Реакции в обработчике получения бонуса:

  1. GetVarCloud → Тип: person, Название: welcome_bonus_claimed
  2. Условие: если переменная не существует (проверка Hasfalse)
  3. AddVarCloud → начисление бонуса
  4. SetVarCloud → установка флага: Тип: person, Название: welcome_bonus_claimed, Значение: true

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

Пример 3: Очистка списка пользователей в чате

Задача: В чате ведётся список нарушителей. После снятия ограничений список нужно очистить.

Реакция DelVarCloud:

  • Тип: chat
  • Название: violators

Результат: Переменная violators в текущем чате удалена.

Пример 4: Удаление переменной другого пользователя (администратор)

Задача: Администратор сбрасывает баланс пользователя, удаляя переменную.

Реакция DelVarCloud:

  • Тип: person
  • Название: balance
  • ID пользователя: ${target_user.id}

Результат: У пользователя target_user переменная balance удалена.

Пример 5: Очистка глобального таймера

Задача: В боте действует глобальный режим обслуживания. После отключения режима нужно удалить глобальную переменную.

Реакция DelVarCloud:

  • Тип: global
  • Название: maintenance_mode

Результат: Глобальная переменная maintenance_mode удалена. Все проверки на её существование теперь будут возвращать false.

🔍 Проверка существования переменной перед удалением

Перед удалением полезно проверить, существует ли переменная:

Вариант 1: Через условие

  1. GetVarCloud → загрузить переменную
  2. Условие Has${var.person.target_var}
  3. Внутри условия → DelVarCloud

Вариант 2: Игнорировать (безопасно)

  • Если переменной не существует, DelVarCloud ничего не делает и не вызывает ошибку.

💡 Совет: Явная проверка не обязательна. DelVarCloud безопасно вызывать даже для несуществующих переменных.

⚠️ Важное предупреждение о контексте

Если значение переменной было загружено в контекст через GetVarCloud до удаления, оно останется доступным в текущем триггере через ${var...}, даже после вызова DelVarCloud.

Пример проблемы:

  1. GetVarCloud → загружена переменная balance = 100
  2. DelVarCloud → переменная удалена из хранилища
  3. SendMessage → текст: Ваш баланс: ${var.person.balance} → выведет 100 (старое значение из контекста)

Как избежать:

  • Вызывайте DelVarCloud до GetVarCloud, если нужно гарантировать отсутствие значения
  • Или не используйте переменную после удаления в том же триггере

🔍 Как проверить, что переменная удалена

Способ 1: Через макрос с default

Переменная: !{varcloud|name: temp_data|default: [не существует]}

Если переменная удалена, вы увидите [не существует].

Способ 2: Через условие Has

  1. GetVarCloud → Тип: person, Название: temp_data
  2. Условие Has${var.person.temp_data}
  • Если условие false → переменной нет

Способ 3: Проверка в админке

Перейдите в /adm → Переменные → выберите тип (person/member/chat) → найдите переменную в списке. Если её нет — она удалена.

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

  • SetVarCloud — создать переменную
  • AddVarCloud — изменить переменную
  • GetVarCloud — загрузить значение и проверить существование
  • DelVarLocal — удалить локальную переменную

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

© 2025 EnotPRO. Все права защищены.