Запитати ШІ
Українська UK
Перейти до Watbot

Довідник функцій

Функцію викликають так: {{ назва(аргумент1, аргумент2) }}. Аргументи — текст у лапках, числа, змінні ($назва) і, у виразах, результати інших функцій.

Функції з позначкою проста працюють скрізь, де є автопідстановки. Решта — лише в текстах повідомлень, умовах і деяких налаштуваннях блоків, див. Де працюють автопідстановки.

Текст

Функція Що робить Приклад Результат
upper(текст) Усі літери великі {{ upper("привіт") }} ПРИВІТ
lower(текст) Усі літери малі {{ lower("ПРИВІТ") }} привіт
capitalize(текст) Перша літера велика {{ capitalize("анна") }} Анна
len(текст) Кількість символів {{ len("Привіт") }} 6
trim(текст) Прибирає пробіли по краях {{ trim(" так ") }} так
replace(текст, що, на_що) Замінює всі входження {{ replace("050-000-00", "-", "") }} 05000000
substr(текст, початок, довжина) Частина тексту; початок з 0 {{ substr("Привіт", 0, 3) }} При
number_format(число, знаків, дробовий_роздільник, роздільник_тисяч) Число з роздільниками. Типово 0 знаків, кома й пробіл {{ number_format(1234.5, 2) }} 1 234,50
urlencode(текст) Кодує текст для посилання https://site.ua/?q={{ urlencode($запит) }}
randomText(варіант1, варіант2, ...) Один варіант навмання {{ randomText("Привіт", "Вітаю") }}
strRandom(довжина, великі) Випадковий рядок із літер і цифр, до 1000 символів. true другим аргументом — лише великі літери {{ strRandom(8, true) }} K3JD8QWZ

Усі функції розділу — прості.

Математика

Функція Що робить Приклад Результат
round(число, знаків) Округлення, типово до цілого {{ round(2.567, 2) }} 2.57
ceil(число) Округлення вгору {{ ceil(2.1) }} 3
floor(число) Округлення вниз {{ floor(2.9) }} 2
abs(число) Модуль числа {{ abs(-5) }} 5
sqrt(число) Квадратний корінь {{ sqrt(16) }} 4
max(a, b, ...) Найбільше {{ max(3, 7, 5) }} 7
min(a, b, ...) Найменше {{ min(3, 7, 5) }} 3
rand(від, до) Випадкове ціле число {{ rand(1, 100) }}

Усі функції розділу — прості. Додавання, віднімання, множення, ділення та степінь пишуть знаками, див. Арифметика.

Застарілі функції

Ці функції й надалі працюють, але в нових текстах пишіть знаки — так коротше й зрозуміліше:

Застаріла функція Як писати тепер
sum($a, $b), сумма($a, $b) {{ $a + $b }}
diff($a, $b), разность($a, $b) {{ $a - $b }}
multiplication($a, $b), произведение($a, $b) {{ $a * $b }}
div($a, $b), деление($a, $b) {{ $a / $b }}
pow($a, $b) {{ $a ** $b }}

Наприклад, замість {{ sum($ціна, $доставка) }} — {{ $ціна + $доставка }}.

Дата і час

Увага

Час рахується за UTC. Київський час — UTC+2 узимку й UTC+3 улітку: {{ date("H:i", "+3 hours") }} для літнього часу.

Функція Що робить
date(формат, дата) Дата в потрібному форматі. Без дати — зараз. Дата — "2026-10-02", "+7 days", "next monday" тощо
time() Поточний час у секундах від 1970 року (Unix time)
modifyDateTime(дата, формат_дати, формат_виведення, зсув) Розбирає дату зі змінної за її форматом, зсуває й виводить в іншому форматі
modifyUnixTime(unix_time, зсув, формат) Зсуває Unix time; з форматом виводить дату, без формату — новий Unix time

Приклади:

Сьогодні {{ date("d.m.Y") }}
Чекаємо на вас {{ date("d.m.Y", "+3 days") }}
Запис перенесено на {{ modifyDateTime($дата_запису, "d.m.Y", "d.m.Y", "+1 day") }}
Доступ до {{ modifyUnixTime(time(), "+30 days", "d.m.Y") }}

Основні символи формату:

Символ Значення Приклад
d день із нулем 02
j день без нуля 2
m місяць із нулем 10
n місяць без нуля 10
Y рік 2026
H години, 24-годинний формат 14
i хвилини 05
s секунди 09
N день тижня, 1 — понеділок 5

Зсув пишуть англійською: "+1 day", "-2 hours", "+1 month", "next friday".

Усі функції розділу — прості.

Примітка

У старих сценаріях трапляється підстановка через знак питання: {{ date("d.m.Y", "+? days", $дні) }} — ? замінюється наступним аргументом. Це й надалі працює, але у виразах простіше склеїти: {{ date("d.m.Y", "+" ~ $дні ~ " days") }}.

Умови

Функція Що робить
printByCondition(a, оператор, b, якщо_так, якщо_ні) Порівнює a і b та виводить один із варіантів. Оператори: =, !=, >, >=, <, <=. Якщо a або b порожні — виводить якщо_ні
printByExistsCondition(значення, якщо_так, якщо_ні) якщо_так, якщо значення не порожнє, інакше якщо_ні
{{ printByCondition($бали, ">=", 100, "Подарунок ваш!", "Накопичуйте далі") }}
{{ printByExistsCondition($телефон, "Телефон збережено", "Залиште телефон") }}

Обидві функції — прості. У виразах зручніше умовний оператор: {{ $бали >= 100 ? "Подарунок ваш!" : "Накопичуйте далі" }}.

Дані контакту та бота

Функція Що робить Проста
var("назва") Значення змінної контакту; зручно для назв із пробілами так
global("назва") Значення глобальної змінної так
printContactTags() Теги контакту через кому так
printContactVariables() Усі текстові змінні контакту списком «- назва: значення» так
printGlobalVariables() Усі глобальні змінні бота списком «- назва: значення» так
getBalance("валюта", "підпис") Баланс рахунку контакту у валюті, з її знаком: getBalance("UAH"). З другим аргументом — число й ваш підпис: getBalance("PTS", "балів") → 150 балів ні
getCartAmount() Сума кошика старого блоку «Кошик» ні

Увага

printGlobalVariables() виводить усі глобальні змінні. Не використовуйте її в повідомленнях контактам, якщо в глобальних змінних зберігаються ключі чи паролі.

Змінні

Функції записують результат у змінну контакту й самі нічого не виводять.

Функція Що робить
setSumVariablesIntoVariable("підсумок", a, b, ...) Зберігає суму в змінну підсумок
setMultiplicationVariablesIntoVariable("підсумок", a, b, ...) Зберігає добуток у змінну підсумок

Доданки — числа або назви змінних у лапках, потрібно щонайменше два: {{ setSumVariablesIntoVariable("підсумок", "ціна", "доставка", 100) }}.

Для обчислень зручніший блок «Операція зі змінною» — там теж можна використовувати вирази.

Списки

Функція Що робить
getListRow("id запису", "шаблон") Виводить один запис списку за шаблоном
getListRows("id списку", "шаблон", скільки, "поле сортування", "asc" або "desc", "роздільник") Виводить записи списку за шаблоном, типово 10, не більше 50, кожен із нового рядка

У шаблоні поле запису пишуть в одинарних фігурних дужках: {Назва}, {Ціна}. У getListRows у шаблон можна вставити змінну контакту: {$місто}.

{{ getListRows("6523f0c2a1b2c3d4e5f60718", "{Назва} — {Ціна} грн", 5, "Ціна", "asc") }}

Бот читає лише списки свого власника.

Реферальна програма

Функція Що виводить
getInviteLink() Особисте реферальне посилання контакту (Telegram, MAX)
getDirectInviteLink(id_сценарію) Пряме посилання на бота з реферальним параметром; зі сценарієм — запуск цього сценарію
getInviteLinkWithSchema(id_сценарію) Реферальне посилання на запуск сценарію
getLinkBySchema(id_сценарію) Посилання на запуск сценарію, без реферального параметра
getReferrals(скільки, "тег") Список запрошених контактом (перша лінія): «1. Ім'я - username», типово 10, не більше 100. З тегом — лише з цим тегом
getReferralsByDepth(лінія, скільки, "тег") Те саме для вказаної лінії
getReferralsCount("тег") Кількість запрошених на всіх лініях
getReferralsCountByDepth(лінія, "тег") Кількість запрошених на вказаній лінії; 0 — на всіх
getReferrer(лінія) Того, хто запросив контакт; 2 — того, хто запросив запрошувача, і т. д.
getReferrers(скільки_ліній, з_лінії, "тег") Список запрошувачів угору ланцюжком

Функції розділу — не прості. Застарілі варіанти з Telegram у назві (getTelegramInviteLink та інші) працюють так само.

Різні тексти для месенджерів

Текст усередині функції побачать лише контакти з указаного месенджера, решті підставиться порожнє місце:

Функція Месенджер
messageToTelegram("текст") Telegram
messageToViber("текст") Viber
messageToVK("текст") ВКонтакте
messageToWeb("текст") Вебчат на сайті
Напишіть нам{{ messageToTelegram(" у Telegram: @example_support") }}{{ messageToWeb(" просто в цьому чаті") }}

Функції розділу — не прості. У виразі така функція має бути єдиною — її не можна ставити всередину умови чи іншої функції.