Skip to main content

Выражения

Выражения в @MenuBuilderBot позволяют вам производить простые математические вычисления прямо в сообщениях вашего бота, в условиях и действиях кнопок, а так же в Action-ах. В выражениях можно использовать константы, цифровые переменные (Макросы), так же функции переменных времени.

Данное руководство описывает только принципы и механики работы с Выражениями. Будут ли использованные вами Выражения работать в том или ином месте вашего бота зависит либо от приобретения соответствующих расширений или Токенов.

Макросы и Выражения Кнопок.
Позволят вам использовать выражения в кнопках.
Для подключения перейдите в вашем боте:
☞ 🔐Админ | 🧩Расширения | 📂Кнопки

Пакет Токенов Функций.
Некоторые Выражения потребляют Токены Функций.
Для подключения перейдите в вашем боте:
☞ 🔐Админ | 🧩Расширения | 📂Action-ы


Как Выглядят Выражения


Выражения должны быть заключены в фигурные скобки: {выражение}. Вложение выражений одно в другое - не допустимо.

Все необходимые значения и операции должны находится в одном выражении заключенном в фигурные скобки. Вы можете использовать пробелы внутри выражений, если хотите - они будут игнорироваться. Используйте круглые скобки "()" если в одном выражении нужно произвести несколько независимых вычислений.

Например:
1. {2+3} ➨ 5
2. {2*3 + 5} ➨ 11
3. {(10-1) * (11-2)} ➨ 81
4. {%balance% * 67 * 1.02} ➨ Зависит от состояния баланса юзера


Разрешённые Значения


Типизация в Выражениях

В общем случае данные с которыми работают Выражения могут быть текстовыми или числовыми.

ВАЖНО: в Выражениях, для корректной работы с текстовыми данными их нужно брать в "" (кавычки).

Тип данных определяется в самом Выражении, либо типом данных используемой в выражении Переменной. Иногда, в Выражении есть необходимость с изначально числовыми данными, работать как с текстовыми.

Подробнее о Переменных и их типах.

В Выражениях вы можете использовать:

1. Числовые значения с "." точкой для десятичных дробей:
1
100
100.99
0.81

2. Значения Числовых переменных (balance и др.) при помощи макросов:
Например: %balance%

3. Служебные макросы с числовыми значениями (реф. системы и проч.):
Например: %refcount%

4. Значения Текстовых Переменных и макросов (если в выражении используется Функция работающая с текстом (см. ниже))
Например: %firstname%

НАПОМИНАНИЕ: Значения Текстовых Переменных или любой другой текст в Выражениях должен браться "в кавычки". Примеры смотри ниже.

Доступные Операции


Вы можете использовать следующие операции (список, возможно, будет расширяться в будущем):

1. Математические операторы: +, -, *, /
{2 + 1}, {3 * 3}

2. Унарные операторы: +, -
{-1 * 3}

3. Деление с округлением вниз до ближайшего целого числа:
{10 // 3} ➨ 3

4. Степень (x в степени y): **
{2 ** 5} ➨ 32 (2 в степени 5)
{pow(2, 5)} ➨ 32 (та же запись только при помощи функции)

Используйте функцию "pow(x, y)" - если "**" нарушает форматирование markdown.


Математические Функции


min(A, B, C, D)
Выберет минимальное значение из списка.

Максимальная длинна списка - 20 значений. Если список длиннее - всегда вернёт 0 (ноль).


max(A, B, C, D)
Выберет максимальное значение из списка.

Максимальная длинна списка - 20 значений. Если список длиннее - всегда вернёт 0 (ноль).


mod(A, B)
Вернёт остаток от деления двух чисел.


Функции Округления


round(xxx.xx)
"Банковское округление" до ближайшего целого числа.
{round(100.01)} = 100
{round(100.99)} = 101

round(xxx.xx, y)
"Банковское округление" до "y" знака после запятой.
{round(100.01, 1)} = 100.0
{round(100.11, 1)} = 100.1
{round(100.99, 2)} = 100.99
{round(100.99, 1)} = 101.0

Данный вид округления может работать с отрицательными числами (кому и зачем это надо - трудно сказать, но может).
Например: {round(12345678, -5)} = 12300000

Функция round() не может добавить разрядов к существующему числу. Для добавления разрядов используйте функцию format_num() (см. ниже).

floor(xxx.xx)
Округление вниз до ближайшего целого числа.
{floor(100.11)} = 100
{floor(100.99)} = 100

ceil(xxx.xx)
Округление вверх до ближайшего целого числа.
{ceil(100.11)} = 101
{ceil(100.99)} = 101


Случайные Значения


randi(A, B)
(random integer) случайное целое число между A и B (включая A и B).

randf(A, B)
(random fraction) случайное дробное число между A и B (включая A и B).

rands()
(random sign) число "1" со случайным знаком: -1 или +1.
Специальная функция для выражения {randi(0,1)*2 - 1}

randl(A, B, C, D) - для чисел.
randl("A", "B", "C", "D") - для текста.
(random list) случайное ЗНАЧЕНИЕ из заданного списка.

Может работать как с Числами, так и с Текстом. при использовании текста он должен быть взят в кавычки.
Максимальная длинна списка - 20 значений. Если список длиннее - всегда вернёт 0 (ноль).

Когда используется в выражении, randi(A, B) будет заменено случайным числом, и вы можете применять к нему любые другие поддерживаемые операторы/функции.

Пример использования в сообщении:
Вы получили {randi(1,10) * 2} яблок


Строковые Функции


bool_symb() и bool_symbn()

Boolean to Symbol и Boolean to Symbol New- позволяют изменять текст в сообщении, условии или на Inline кнопке в зависимости от того выполняется заданное условие или нет.

Функция bool_symbn() (Boolean to Symbol New) в отличии от bool_symb() показывает результат с Новой Строки, но только если результат не пустой - это позволяет задавать несколько подряд идущих выражений в ОДНУ строку, а результат будет выстраиваться в столбик ровно такой высоты, какой нужно, без пустых строк. Все возможности описанные для bool_symb() в равной степени относятся и к bool_symbn().

ВНИМАНИЕ: функция потребляет 0.1 "Токен Функций". Если Токены Функций не доступны покажет "---" прочерк.

bool_symb((A), "B", "C") - кавычки для текста.
bool_symb((A), B, C) - без кавычек для выражений.
Где А - это Условие
Если A - ИСТИННО или 1 (True), покажет B - строку / выражение.
Если A - ЛОЖНО или 0 (False), покажет C - строку / выражение.

bool_symb() можно использовать в текстах сообщений, в Выражениях и заголовках Inline Кнопок.

Функция может работать как со Строковыми (текст), так и с Числовыми данными. Если в качестве параметров "B" или "C" передано число, то его можно будет использовать в вычислениях математических выражений. Параметр в "B" и "С" может формироваться разными способами: текстом, числом, макросом переменной или математическим выражением.
ВАЖНО: каждый отдельный параметр "B" и "C" может принимать и обрабатывать только ОДИН тип данных: либо Текст, либо Число (смешивать их в ОДНОМ параметре - нельзя), вне зависимости от того каким способом, из указанных выше, эти данные были переданы в параметр.

• Пример 1: Если нужно показать два вида сообщений (текста):
{bool_symb((%mynum% == 1), "✅", "❌")}
Если значение переменной mynum равно 1, то покажет ✅, в противном случае ❌.

• Пример 2: Когда нужно показать сообщение (текст) только если условие верно, оставьте вторые кавычки пустыми:
{bool_symb((%mynum% == 1), "✅", "")}
Если mynum равно 1, то покажет ✅, в противном случае не покажет ничего.

• Пример 3: Когда нужно показать сообщение (текст) только если в Цифровой переменной есть данные:
{bool_symb((%mynum% != 0), "✅", "")}
Если в переменной mynum есть какие-либо цифровые данные, то покажет ✅, в противном случае не покажет ничего.

• Пример 4: Когда нужно показать сообщение (текст) только если в Текстовой переменной есть данные:
{bool_symb(("%mytext%" != ""), "✅", "")}
Если в переменной mytext есть какие-либо текстовые данные, то покажет ✅, в противном случае не покажет ничего.

• Пример 5: Когда нужно использовать выражение вместо текста:
{bool_symb((%mynum% == 0), "❌", %var1% + %var2%)}
Если mynum равно 0, то покажет ❌, в противном случае покажет значение выражения %var1% + %var2%.

Больше интересных способов использования bool_symb() вы найдёте в этом Пособии.


int_symb()

Integer to Symbol - позволяет заменять числа переданных ей числовых значений указанными символами в соответствующих количествах. Позволяет задать максимальное отображаемое количество символов.

ВНИМАНИЕ: функция потребляет 0.1 "Токен Функций". Если Токены Функций не доступны покажет "---" прочерк.

int_symb(A, "B", C)
Где A - это переданный числовой Параметр (может быть цифровой переменной).
B - это символ которым нужно заменить число переданного Параметра.
C - это максимальное количество отображаемых в сообщении символов.

• Пример 1: покажет 5 символов "😀" из максимальных 10:
{int_symb(5, "😀", 10)}
Результат: 😀😀😀😀😀

• Пример 2: покажет 10 символов "😡" из максимальных 10 несмотря на то что переданный Параметр равен 15 оставшиеся 5 символов будут отображены цифрами:
{int_symb(15, "😡", 10)}
Результат: 😡😡😡😡😡😡😡😡😡😡 +5

• Пример 3: Цифровая переменная %num% содержит 5 в качестве значения. Таким образом функция покажет 5 символов "🤯" из максимальных 10:
{int_symb(%num%, "🤯", 10)}
Результат: 🤯🤯🤯🤯🤯

Больше интересных способов использования int_symb() вы найдёте в этом Пособии.


num_symb()

Numeric to Symbol - принимает значение ЦИФРОВОЙ переменной и в зависимости от числа указанного в ней показывает заданный текст.

ВНИМАНИЕ: функция потребляет 0.1 "Токен Функций". Если Токены Функций не доступны покажет "---" прочерк.

num_symb(A, "X", "Y", "Z")
Где А - это макрос цифровой переменной.
X, Y, Z - Текстовые данные которые нужно подставить.

Нумерация начинается с 0 (ноля)
Максимальное количество аргументов: 10.
Если число в переменной больше 9 - функция не покажет ничего.

• Пример 1: в переменной var_name - 1
{num_symb(%var_name%, "XXX", "YYY", "ZZZ")} 
Результат: YYY

• Пример 1: в переменной var_name - 1 или 3
{num_symb(%var_name%, "XXX", "", "ZZZ")} 
Результат: не покажет ничего

ОШИБКИ: Если вместо результата функция показывает:
--1- - число параметров больше разрешённого (20)
--2- - указанное вами число - дробное (используйте только целые числа)
--3- - указанное вами число - меньше 0 (нуля) или больше числа параметров

len()

Функция позволяющая узнать длину строки - переданные ей данные переводятся в формат строки, длинна строки возвращается в качестве результата.

len(A) - для числовых данных.
len("B") - для текстовых данных.
A - числовые данные или Числовая переменная.
B - любые данные (в том числе и данные Числовых переменных).

Символы "пробела" в строках так же учитываются в общем количестве символов.

• Пример:
len(777) 3
len("ololo-5") 7


startswith()

Функция позволяющая проверить начало строки на совпадение - переданные ей данные переводятся в формат строки, начало строки сверяется с заданным текстом. True / False возвращается в качестве результата.

startswith("A", "B") - любые данные в кавычках (как текст).
A - данные для анализа (текстовые или числовые).
B - проверочные данные.

Сверяется только НАЧАЛО строки.

Регистр символов имеет значение.

• Пример 1 - текст:
startswith("MYname", "MY") True
startswith("MYname", "my") False
startswith("notMYname", "MY") False

• Пример 2 - макрос переменной:
startswith("%variable%", "123") - сравнивается содержимое переменной


in_str()

Функция позволяющая проверить наличие заданных символов или слов в тексте переменной. True / False возвращается в качестве результата.

in_str("A", "B") - любые данные в кавычках (как текст).
A - данные для анализа (текстовые или числовые).
B - проверочные данные.

Регистр символов имеет значение - в общем случае. В условиях все данные приводятся в нижний регистр.

• Пример 1 - текст:
in_str("MYname", "MY") ➨ True
in_str("MYname", "my") ➨ False

• Пример 2 - макрос переменной:
in_str("%variable%", "123") - сравнивается содержимое переменной


in_list()

Функция проверяет, встречается ли первое значение среди списка остальных. True / False возвращается в качестве результата.

in_list("A", "B1", "B2", "B3")
A - некое значение.
B1, B2, B3 - список значений для сравнения.

В качестве значений "A" и "B" можно использовать как любые макросы, так и заданные вами текстовые значения.
Максимальная длинна списка 20 элементов.

replace()

Функция позволяет заменить любое сочетание символов в "строке" на указанное вами.

Удобно например для формирования GET запросов при помощи замены пробелов на знаки "+" в поисковых запросах разных сайтов. Вообще, сфера применения не ограничивается ссылками.

replace("A", "B", "C") - любые данные в кавычках (как текст).
A - данные для анализа (текстовые или числа как текст).
B - последовательность символов которую нужно заменить.
C - то, чем нужно заменить найденное.

Максимальная длина текста в котором ищем - 500 символов.
Максимальная длина текста для замены 25 символов.

• Пример 1 - Запрос GET:
Поиск в Google:
find - переменная, которая содержит текст "menu builder bot".
Ссылка:
https://www.google.com/search?lh=ru&q={replace("%find%", " ", "+")}
Получим (замена пробелов на символы "+"):
https://www.google.com/search?hl=ru&q=menu+builder+bot

Пробелы в ссылках можно заменять URL-кодом %20.
Например: {replace("%find%", " ", "%20")}

• Пример 2 - Текст:
replace("Menu_Builder_Bot", "_", " ") Menu Builder Bot


urlencode()

Функция позволяет преобразовывать текст в коды Unicode, в первую очередь для формирования корректных строк для URL-адресов.

urlencode("A") - любые данные в кавычках (как текст).
A - данные для перекодировки (текстовые или числа как текст).

Максимальная длина текста для перекодировки - 500 символов.

• Пример 1 - Запрос GET:
Поиск в Google:
find - переменная, которая содержит текст "menu builder bot".
Ссылка:
https://www.google.com/search?lh=ru&q={urlencode("%find%")}
Получим (замена пробелов на символы Unicode):
https://www.google.com/search?hl=ru&q=menu%20builder%20bot

link()

Функция создания текстовой гиперссылки в сообщениях меню вашего бота.

Теперь созданные вами ссылки можно копировать на ровне с остальной разметкой сообщения и в конечном варианте ссылка будет корректно отображаться.

link("A", "B")
A - текст ссылки
B - адрес ссылки

• Пример:
link("MenuBuilderBot", "https://t.me/menubuilderbot")

Оба параметра функции link() необходимо брать "в кавычки".

vget() и vgetn()

Функции для обращения к значениям переменных. Функции принимают текст в качестве имени переменной, в тексте можно использовать макросы других переменных.
vget() - возвращает данные переменной в ТЕКСТОВОМ формате - вне зависимости от формата и содержимого самой переменной.
vgetn() -  возвращает данные переменной в ЦИФРОВОМ формате - вне зависимости от формата и содержимого самой переменной. Если данные в переменной не могут быть представлены цифрами - вернёт "---" (ошибку).

ВАЖНО: Функция vget() может принимать данные из ЛЮБЫХ типов переменных, однако возвращает данные всегда в ТЕКСТОВОМ формате (даже если это цифры). Другими словам: берёт всё что угодно - возвращает ТЕКСТ. То есть полученные от неё данные нельзя использовать в вычислениях - можно только сравнивать с другим текстом.

ВАЖНО: Функция vgetn() может принимать данные из ЛЮБЫХ типов переменных, однако возвращает данные всегда в ЦИФРОВОМ формате (даже если это данные текстовой переменной, содержащей цифры). Другими словам: берёт всё, что угодно - возвращает ЧИСЛО. То есть полученные от неё данные можно использовать в вычислениях и сравнениях.

Основной особенностью данных функций является то, что имя переменной, значение которой нужно получить, составляется при помощи текста, с использованием системных макросов, а также макросов других переменных. Таким образом, при помощи одной и той же функции в сообщении можно получить обращение к разным переменным в зависимости от состояния и значения других переменных юзера.

vget("A") и vgetn("A")
vget("A%M%A") и vgetn("A%M%A")
A - текст имени переменной (или его часть)
M - имя системного макроса или другой переменной (как любой макрос - заключён в знаки %процента%)

Параметры функций vget() и vgetn() (имена переменных) - это текст и его необходимо брать "в кавычки".

Пример 1: Формирование имени переменной для запроса данных.
Значение %num% равно 1;
vget("var%num%") %var1% (сформированное имя переменной)
vget("var%num%txt") %var1txt% (сформированное имя переменной)

Пример 2: Отображение одного и того же значения обеими функциями.
Значение текстовой %var1% равно "xxx";
vget("var1") %var1% xxx (покажет текст)
vgetn("var1") %var1% --- (покажет ошибку)

Значение текстовой %var2% равно "555";
vget("var2") %var2% 555 (как текст)
vgetn("var2") %var2% 555 (как число)

Две представленные функции открывают просто "Вселенную" для создания универсального функционала, на совершенно иных принципах. Со стороны это может так не выглядеть, но кто понял - тот оценит открывшиеся возможности. Кто не понял - извините, но объяснить это практически нереально.


is_digit()

Функция возвращающая true если строка содержит ТОЛЬКО цифры и false если в строке содержатся и другие символы кроме цифр.

is_digit("A")
A - любая Строка (текст или значение переменной)

• Пример 1 (синтаксис):
is_digit("55555") ➨ True
is_digit("55555aaaaa") ➨ False

• Пример 2 (условие):
{is_digit("55555") == True} - Условие верно
{is_digit("55555")} - то же, только сокращенная запись

В качестве аргумента можно использовать Макросы переменных.


as_num()

Функция преобразует строковые значения в численные.

Функция выполняет два вида действий:
1. Позволяет использовать данные текстовых переменных содержащих числовые значения в вычислениях Выражений.
2. Преобразует некорректные числа текстового формата в корректные математические (например: 01 будет показано как 1).

❖ Функции для работы с числами


format_num()

Функция форматирования вывода числа в сообщении - позволяет добавлять к числу нули разрядов как слева от целой части, так и справа от дробной - игнорируя правила стандартной математической записи.

ВНИМАНИЕ: функция потребляет 0.1 "Токен Функций". Если Токены Функций не доступны покажет "---" прочерк.

format_num(A, B, C)
A - само число.
B - количество разрядов в дробной части
C - количество разрядов в целой части (не обязательно)

• Пример 1: целые и дробные:
format_num(1, 6, 2) = 01.000000
format_num(1.23, 6, 2) = 01.230000
format_num(0.1234, 6, 2) = 00.123400

Если число разрядов в оригинальном числе больше чем указано в функции - они останутся без изменений. Функция format_num() - НЕ может уменьшить количество разрядов, для уменьшения (округления) используйте функцию round() (см. выше).

КЕЙС: Число из 12 разрядов превратить в число из 9 разрядов.
Если просто округлить {round(0.000000124278753, 9)} = 0.00000012 (получим число на 8 разрядов, а не на 9).
Чтобы получить 9 разрядов в результате - сначала округляем число до 9 знаков, а только потом задаём его формат:
{format_num(round(0.000000124278753, 9), 9)} = 0.000000124 (получаем 9 разрядов).

• Пример 2: количество разрядов больше чем задано в функции:
format_num(12.345678, 4, 1) = 12.345678

Если в форматировании целой части нет необходимости - третий параметр задаётся нулём или не указывается вовсе.

• Пример 3: только дробные с параметром и без:
format_num(1, 4, 0) = 1.0000
format_num(1, 4) = 1.0000
format_num(1.23, 4, 0) = 1.2300
format_num(1.23, 4) = 1.2300

abs()

Функция возвращающая модуль числа - всегда вернет ПОЛОЖИТЕЛЬНОЕ число, даже если в переменной содержится отрицательное.

В основном нужна для форматирования пользовательского ввода - чтобы юзеры не могли использовать отрицательное число там где это недопустимо,либо чтобы исключить ошибки ввода данных.

abs(A)
A - число.

Пример: Значение переменной num равно -5;
abs(%num%) 5

Функции работы с Датой и Временем


Смотри специальный раздел по функциям работы с Датой и Временем.


Функции "Жеваная Магия"
для Эйнштейнов и их Друзей


961f18fe16ea49db67f1d.jpg

addl()

Add Loop - Добавление значения с циклическим переполнением. Позволяет зациклить перебор значений с указанными параметрами запустив их по кругу и сбрасывая значение при достижении заданного максимума.

addl(A, B, C)
A - текущее число.
B - добавляемое число (delta).
C - граница переполнения (limit).

Давайте разберем принцип работы функции на примере часов:
{add_loop(20, 10, 24)} == 6
В примере выше сейчас 20 часов (20:00 = 8 вечера), мы добавляем 10 часов, максимальное количество часов в сутках это 24 - поэтому граница переполнения (limit) равна 24. Таким образом 20 (20:00) + 10 часов (delta) получаем 6 (06:00 = 6 утра). Функция проходя границу 24 часов сбрасывает показания на 0 (ноль) и продолжает уже оттуда.


• Пример 1: последовательный перебор (с шагом 1) номеров от 0 до 4 для БОНУСНОЙ кнопки прибавляющей значение.
{-1 * %num% + addl(%num%, 1, 4)}
Что происходит в выражении:
{-%num% + (%num% + 1)} == 1
Бонусная кнопка для переменной %num% с таким выражением для начисления при каждом нажатии будет последовательно записывать в нее результаты 0, 1, 2, 3, 4, 0, 1... и так далее по кругу. Результат каждого шага должен записываться в переменную %num% изменяя ее значение.


Дальнейший разбор работы функции нужен НЕ ВСЕМ! Если вам не важно как это работает, или вы прочитали и ничего не поняли, просто используйте представленное выражение для бонусных кнопок и не забивайте себе голову.

Давайте разберем поведение функции... часть выражения {-1 * %num%} в результате вычисления даст отрицательное значение самой переменной %num% (в принципе можно использовать и выражение {-%num%} оно даст тот же результат).

Для чего это нужно?

Конечным результатом выражения должно быть одно число которое Бонусная кнопка ПРИБАВИТ к существующему в переменной на работу с которой она настроена. Бонусная кнопка всегда только прибавляет значение - такова её механика (для Action-ов где существует возможность напрямую присваивать значение переменным все эти сложности не нужны).

В результате вычисления в выражении {addl(%num%, 1, 4)} мы получаем сумму текущего значения переменой %num% и единицы (delta), которая является нашим шагом функции. Если Бонус кнопка просто добавит новое значение выражения к переменной, мы получим результат больше желаемого {%num% + (%num% + 1)}, а это не то что нам нужно. Поэтому прежде чем бонус кнопка добавит результат в переменную, от этой суммы нужно отнять уже существующее в переменной значение, таким образом Бонус кнопкой добавит только остаток. Проще всего это сделать прибавив сумму к отрицательному значению самой переменной - потому как сложение с отрицательным числом равнозначно вычитанию.

Представим что текущее значение %num% это 2 (а следующее её значение соответственно должно быть 3). Тогда выражение {addl(%num%, 1, 4)}, будет выглядеть вот так: {addl(2, 1, 4)} это 2+1 = 3. В этом случае бонусная кнопка должна прибавить результат 3 к значению переменной уже равному 2-м, в результате, в переменной мы вместо 3 получим 5. Чтобы этого не происходило, прежде чем добавлять значение при помощи Бонусной кнопки, в самом выражении мы сначала берем отрицательное значение нашей переменной %num% и прибавляем к ней её же значение увеличенное на 1. Таким образом получая 1 в качестве результата вычисления и Бонусная кнопка прибавив это значение даст нам 3 (три) - нужное значение в переменной %num%.


flag_get(), flag_set(), flag_del()

Установка и использование Флагов. Числовую переменную можно использовать для флагов. При использовании в качестве флаговой переменной смотреть на значение переменной можно, но практического смысла нет. В одной переменной может быть до 30 флагов.

Узнать, есть ли флаг в переменной

flag_get(A, B) - Основная запись.
A - Макрос имени переменной.
B - порядковый номер флага от 1 до 30.

Возвращает 0 (ноль) если флага нет и >0 если флаг есть.

Где использовать: сообщения совместно с bool_symb(), bool_symbn(), условия кнопок и Action-ов.

• Пример 1: условие на кнопке
{flag_get(%subscription%, 1) != 0}
Если ячейка №1 не равна нулю и в ней содержится флаг, значит юзер подписан на рассылку №1.

• Пример 2: условие на кнопке
{flag_get(%subscription%, 2) == 0}
Если в ячейке №2 нет флага, значит юзер НЕ подписан на рассылку №2.


Установить флаг в переменной

flag_set(A, B)
A - Макрос имени переменной.
B - порядковый номер флага от 1 до 30.

Где использовать: кнопки изменения значений (бонус, обмен1)

• Пример 3: бесплатная подписка (бонусная кнопка, значение бонуса)
{flag_set(%subscription%, 1)}
Установит флаг в ячейку №1 (например подписка на рассылку номер 1).

• Пример 4: покупка доступа (кнопка обмен1, в качестве значения начисления)
{flag_set(%subscription%, 2)}
Установить флаг в ячейку №2 (например покупка доступа номер 2).

• Пример 5: Чтобы избежать двойной покупки лучше использовать условие
{flag_get(%subscription%, 2) == 0}
Проверит нету ли флага в ячейке №2 и если нету, то позволит дальнейшие действия.


Снять флаг в переменной

flag_del(A, B)
A - Макрос имени переменной.
B - порядковый номер флага от 1 до 30.

Где использовать: кнопка бонус, возможно обмен1 если придумать зачем...

• Пример 6: Отписка от рассылки
{flag_del(%subscription%, 1)}
Удалит флаг в ячейке №1 (Отписка от рассылки номер 1).


Примеры Сообщений


Пример 1:
Ваш баланс {%balance% * 100} USD

Пример 2:
У вас %refcount% рефералов. напишите нам и вы получите 0.5$ за каждых 10 рефералов и 2$ бонус за каждых 100 рефералов. Всего вы получите: {%refcount%//10 * 0.5 + %refcount%//100 * 2}.


Ограничения


Выражения нельзя помещать внутрь других выражений.

Пример НЕправильного выражения:
{a + {b + c}}
Представленное выражение является "Вложенным" и не будет правильно проанализировано. Все неправильные выражения будут оставлены необработанными или могут быть обработаны частично - в любом случае результат будет не верным.

Используйте круглые скобки "()" ели в одном выражении нужно произвести несколько независимых вычислений.
Пример правильного выражения:
{a + (b + c)}

• • •

В выражениях используйте " . " (точку ), а не " , " (запятую) в качестве разделителя дробной части.

Пример НЕправильного выражения:
{x,xx + x,xxx}
Такое выражение не будет разобрано и в сообщении будет показано в исходном виде.

Пример правильного выражения:
{x.xx + x.xxx}


Кавычки выражения работающего с текстом переменных и кавычки внутри текста переменных - должны отличатся.

Пример:
{len("%text%")} - считаем количество символов в переменной %text%.
Если текст содержащийся внутри переменной %text% содержит кавычки: "", то в самом выражении можно использовать другой вид кавычек, например одинарные: ''. Таким образом выражение будет выглядеть вот так:
{len('%text%')}.


Дополнительная Информация


Выражения в Условиях.

Подробнее об Условиях читайте в отдельном руководстве.

• • •

Переменные Времени в выражениях.

Только если Функция переменной времени возвращает число после обработки.

Подробнее о переменных Времени и способах работы с ними читайте в Руководстве по переменным Времени.