Спросить ИИ
Русский RU
Перейти в Watbot

Переменные

Переменные контакта хранят данные одного человека: город, выбранный букет, сумму заказа. Глобальные переменные общие для всего бота: адрес магазина, курс валюты, счётчик заказов. Подробнее о том, где их видно и как подставить в сообщение, — в разделе «Данные для подстановки».

Что записали функции, сохраняется после того, как код завершился без ошибки. Внутри кода чтение уже видит записанное.

getContactVariable

getContactVariable(name)

Возвращает значение переменной контакта.

Параметр Тип Что передать
name Строка Имя переменной, как в карточке контакта. Пробелы и русские буквы допустимы

Возвращает значение строкой или undefined, если у контакта нет такой переменной. Для расчётов оберните значение в Number().

var count = Number(getContactVariable('количество_роз') || 0);

if (count >= 11) {
    setContactVariable('скидка', 10);
}

Если переменную записал этот же код, функция вернёт значение в том виде, в каком его записали: число останется числом.

setContactVariable

setContactVariable(name, value)

Записывает переменную контакта. Если переменной нет, она появится.

Параметр Тип Что передать
name Строка Имя переменной
value Строка, число, true или false Значение

Ничего не возвращает.

Объект, массив, null и undefined не сохраняются как есть — переменная получит пустое значение. Чтобы сохранить объект или массив, превратите его в строку, а при чтении разберите обратно:

setContactVariable('корзина', JSON.stringify(['Розы', 'Тюльпаны']));

var cart = JSON.parse(getContactVariable('корзина') || '[]');

Логические значения лучше хранить строками, например 'да' и 'нет': true и false при следующем чтении в другом блоке придут строками '1' и ''.

deleteContactVariable

deleteContactVariable(name)

Удаляет переменную контакта.

Параметр Тип Что передать
name Строка Имя переменной

Ничего не возвращает. После удаления getContactVariable с этим именем вернёт undefined.

deleteContactVariable('промокод');

getGlobalVariable

getGlobalVariable(name)

Возвращает значение глобальной переменной бота.

Параметр Тип Что передать
name Строка Имя глобальной переменной

Возвращает значение строкой или undefined, если такой переменной нет.

var freeDelivery = Number(getGlobalVariable('бесплатная_доставка_от') || 0);
var sum = Number(getContactVariable('сумма_заказа') || 0);

if (sum >= freeDelivery) {
    sendMessage('Доставка для вас бесплатная.');
}

setGlobalVariable

setGlobalVariable(name, value)

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

Параметр Тип Что передать
name Строка Имя глобальной переменной
value Любой Значение. Сохраняется строкой: число 5 станет '5', а объект — '[object Object]', поэтому объекты превращайте в строку через JSON.stringify

Ничего не возвращает.

var orders = Number(getGlobalVariable('заказов_сегодня') || 0);
setGlobalVariable('заказов_сегодня', orders + 1);

Внимание

Если код с такой записью выполняется у нескольких контактов одновременно, каждый прочитает одно и то же старое значение, и часть прибавлений потеряется. Для точного счёта такой счётчик не подходит.

deleteGlobalVariable

deleteGlobalVariable(name)

Удаляет глобальную переменную бота.

Параметр Тип Что передать
name Строка Имя глобальной переменной

Ничего не возвращает.

deleteGlobalVariable('акция_дня');