Интерпретатор JavaScript
Блок выполняет ваш код на JavaScript: считает, преобразует данные, меняет переменные и теги контакта, решает, куда сценарию идти дальше. Сам по себе блок ничего не отправляет в чат — только то, что вы отправите из кода.


Настройки
В блоке одно поле — редактор кода. Начните набирать имя функции, и редактор предложит подсказку.


Что доступно коду
Данные контакта — готовые переменные. Все значения — строки. Если у контакта чего-то нет, переменной не будет — проверяйте через typeof phone !== 'undefined'.
| Переменная | Что в ней |
|---|---|
id |
ID контакта на платформе |
name, first_name, last_name |
Имя целиком, первое слово имени, второе слово |
phone, email, address |
Телефон, почта, адрес |
username |
Имя пользователя в мессенджере |
telegram_id, max_id |
ID человека в Telegram и MAX |
created_at |
Дата появления контакта в виде 2026-01-31 12:00:00 |
bot_id |
ID бота |
Функции:
| Функция | Что делает |
|---|---|
getContactVariable(name) |
Возвращает значение переменной контакта или undefined, если её нет. Значение — строка: для расчётов оберните в Number() |
setContactVariable(name, value) |
Записывает переменную контакта. Значение — строка, число или true/false. Объект или массив сначала превратите в строку: JSON.stringify(value) |
deleteContactVariable(name) |
Удаляет переменную контакта |
getContactTags() |
Возвращает массив тегов контакта |
hasContactTag(name) |
true, если у контакта есть тег |
setContactTag(name) |
Добавляет тег |
deleteContactTag(name) |
Снимает тег |
getGlobalVariable(name) |
Возвращает глобальную переменную бота |
setGlobalVariable(name, value) |
Записывает глобальную переменную. Значение сохраняется строкой |
deleteGlobalVariable(name) |
Удаляет глобальную переменную |
sendMessage(text) |
Отправляет контакту текст. За один запуск — до десяти сообщений |
goToBlock(id) |
Переводит контакта в блок с указанным ID. Вызвать можно один раз за запуск |
disableContinue() |
Отключает связь «Продолжить» для этого запуска |
hash_hmac(algo, text, key, format) |
Подпись HMAC. Алгоритм — md5, sha1, sha256, sha512 или md4. Результат — в шестнадцатеричном виде, а если четвёртым параметром передать 'base64' — в Base64 |
base64_encode(text), base64_decode(text) |
Кодирование и раскодирование Base64 |
Параметры, возвращаемые значения и примеры каждой функции — в разделе «JavaScript API».
Переменные и теги записываются контакту после того, как код отработал без ошибок. Внутри кода getContactVariable уже видит значение, которое вы только что записали.
Посчитать цену со скидкой и сохранить результат:
var price = Number(getContactVariable('цена'));
var total = Math.round(price * 0.9);
setContactVariable('итог', total);
Следующий блок покажет результат автоподстановкой {{ $итог }}.
Отправить контакта с тегом в отдельную ветку:
if (hasContactTag('vip')) {
goToBlock(12345);
disableContinue();
}
Вместо 12345 подставьте ID нужного блока — он виден в настройках блока. goToBlock сам по себе не отменяет связь «Продолжить»: без disableContinue() бот выполнит и указанный блок, и тот, что подключён к «Продолжить».
Выходы
- «Продолжить» — срабатывает после выполнения кода, если код не вызвал
disableContinue().
Ограничения
- Язык — JavaScript стандарта ES5: без
letиconst, стрелочных функций и шаблонных строк. - Регулярные выражения — без просмотра вперёд и назад и без обратных ссылок, подробнее — в разделе «Язык».
- Код — до 16 384 символов.
- На выполнение — 5 секунд. Код, который не уложился, останавливается с ошибкой.
- Запросов в сеть из кода сделать нельзя — для этого есть блок «HTTP-запрос».
Если код не работает
Откройте «Лог выполнения» в настройках блока. В записи видны исходный код, список выполненных действий и значение последнего выражения — его удобно использовать для отладки: допишите в конец кода имя переменной, и её значение попадёт в лог.


Внимание
Если код завершился с ошибкой, её текст уйдёт контакту в чат, а сценарий пойдёт дальше по связи «Продолжить». Проверяйте код в превью бота, прежде чем запускать его на людях.