Інтерпретатор 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-запит».
Якщо код не працює
Відкрийте «Лог виконання» в налаштуваннях блоку. У записі видно вихідний код, список виконаних дій і значення останнього виразу — його зручно використовувати для налагодження: допишіть у кінець коду ім'я змінної, і її значення потрапить у лог.


Увага
Якщо код завершився з помилкою, її текст піде контакту в чат, а сценарій піде далі за зв'язком «Продовжити». Перевіряйте код у попередньому перегляді бота, перш ніж запускати його на людях.