varcloud
Макрос !{varcloud} подставляет значение облачной переменной непосредственно в текст. Это альтернатива реакции GetVarCloud, но без необходимости предварительной загрузки переменной в контекст.
Сравнение с GetVarCloud:
| Характеристика | !{varcloud} | GetVarCloud |
|---|---|---|
| Синтаксис | !{varcloud...} | Реакция в триггере |
| Загрузка в контекст | Нет (значение подставляется сразу) | Да (через ${var.type.name}) |
| Когда использовать | Необходимо значение | Необходимы все значения |
| Скорость | Быстрее | Медленнее (требуется отдельный вызов) |
💡 Совет: Для подстановки значения переменной в сообщение используйте !{varcloud}. Для сложной логики (проверки, изменения) используйте GetVarCloud.
Синтаксис
!{varcloud|
type: тип;
name: название;
userid: ID пользователя;
chatid: ID чата;
}
Короткая форма
!{varcloud|type: person; name: score}
Параметры
| Параметр | Тип | Обязательный | Описание | Значение по умолчанию |
|---|---|---|---|---|
type |
Строка | ❌ Нет | Тип облачной переменной | person |
name |
Строка | ✅ Да* | Название переменной | — |
id |
Строка | ❌ Нет | ID переменной (вместо type + name) | — |
userid |
Число | ❌ Нет | ID пользователя (для person и member) | target.user.id |
chatid |
Число | ❌ Нет | ID чата (для member и chat) | target.chat.id |
- name обязателен, если не указан id.
Типы переменных (type)
| Тип | Описание | Требует userid | Требует chatid |
|---|---|---|---|
| person | Личная переменная пользователя | ❌ Нет (по умолчанию — текущий) | ❌ Нет |
| member | Переменная участника чата | ❌ Нет (по умолчанию — текущий) | ❌ Нет (по умолчанию — текущий) |
| chat | Переменная чата/канала | ❌ Нет | ❌ Нет (по умолчанию — текущий) |
| dynamic | Динамическая переменная | ❌ Нет | ❌ Нет |
| global | Глобальная переменная (для всех пользователей) | ❌ Нет | ❌ Нет |
💡 По умолчанию:
useridберётся изtarget.user.id(текущий пользователь)chatidберётся изtarget.chat.id(текущий чат)
Примеры
Простейший пример (текущий пользователь)
Переменная score текущего пользователя
Ваш счёт: !{varcloud|type: person; name: score}
Если у пользователя score = 125, результат: Ваш счёт: 125
Сокращённая запись (type по умолчанию — person)
То же самое, но короче
!{varcloud|name: score}
Переменная другого пользователя
Баланс пользователя с ID 123456789
!{varcloud|type: person; name: balance; userid: 123456789}
Переменная участника чата
Предупреждения пользователя в текущем чате
Предупреждений: !{varcloud|type: member; name: warns}
Переменная чата
Приветственное сообщение, отправленное в этом чате
ID приветствия: !{varcloud|type: chat; name: welcome_message_id}
Глобальная переменная
Глобальный счётчик запусков бота
Всего запусков: !{varcloud|type: global; name: total_starts}
Использование id вместо type + name
Если вы знаете внутренний ID переменной, можно использовать его:
!{varcloud|id: 12345}
⚠️ Примечание:
id— это технический идентификатор переменной в системе. Обычно проще использоватьtype+name.
В сообщении с текстом
SendMessage
→ Текст: |
Привет, ${user.name}!
Твой текущий счёт: !{varcloud|name: score}
Для пополнения отправь /deposit
С значением по умолчанию (через |default)
Макрос !{varcloud} можно комбинировать с параметром |default для подстановки значения по умолчанию, если переменная не существует:
!{varcloud|name: score|default: 0}
Если переменная score не существует, результат будет 0
Типичные ошибки и их решение
| Ошибка | Причина | Решение |
|---|---|---|
| Макрос ничего не выводит | Переменная не существует | Используйте default: значение |
| Выводится [object Object] | Переменная содержит сложный объект | Используйте !{pick} для извлечения конкретного поля |
| userid не подставлен | Не указан userid, а контекст не содержит target.user | Укажите userid явно |
| Переменная не та | Неправильный type | Проверьте, где создана переменная (person, member, chat) |