Переменные
Переменные контакта хранят данные одного человека: город, выбранный букет, сумму заказа. Глобальные переменные общие для всего бота: адрес магазина, курс валюты, счётчик заказов. Подробнее о том, где их видно и как подставить в сообщение, — в разделе «Данные для подстановки».
Что записали функции, сохраняется после того, как код завершился без ошибки. Внутри кода чтение уже видит записанное.
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('акция_дня');