Справочник функций
Функция вызывается так: {{ имя(аргумент1, аргумент2) }}. Аргументы — текст в кавычках, числа, переменные ($имя) и, в выражениях, результаты других функций.
Функции, отмеченные простая, работают везде, где есть автоподстановки. Остальные — только в текстах сообщений, условиях и некоторых настройках блоков, см. Где работают автоподстановки.
Текст
| Функция | Что делает | Пример | Результат |
|---|---|---|---|
upper(текст) |
Все буквы большие | {{ upper("привет") }} |
ПРИВЕТ |
lower(текст) |
Все буквы маленькие | {{ lower("ПРИВЕТ") }} |
привет |
capitalize(текст) |
Первая буква большая | {{ capitalize("анна") }} |
Анна |
len(текст) |
Количество символов | {{ len("Привет") }} |
6 |
trim(текст) |
Убирает пробелы по краям | {{ trim(" да ") }} |
да |
replace(текст, что, на_что) |
Заменяет все вхождения | {{ replace("8-999-000", "-", "") }} |
8999000 |
substr(текст, начало, длина) |
Часть текста; начало с 0 | {{ substr("Привет", 0, 3) }} |
При |
number_format(число, знаков, дробный_разделитель, разделитель_тысяч) |
Число с разделителями. По умолчанию 0 знаков, запятая и пробел | {{ number_format(1234.5, 2) }} |
1 234,50 |
urlencode(текст) |
Кодирует текст для ссылки | https://site.ru/?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+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("RUB"). Со вторым аргументом — число и ваша подпись: 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(" прямо в этом чате") }}
Функции раздела — не простые. В выражении такая функция должна быть единственной — её нельзя ставить внутрь условия или другой функции.