Выражения
Выражения в @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()
необходимо брать "в кавычки".
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
❖ Функции работы с Датой и Временем
Смотри специальный раздел по функциям работы с Датой и Временем.
❖ Функции "Жеваная Магия"
для Эйнштейнов и их Друзей
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%')}
.
❖ Дополнительная Информация
Выражения в Условиях.
Подробнее об Условиях читайте в отдельном руководстве.
• • •
Переменные Времени в выражениях.
Только если Функция переменной времени возвращает число после обработки.
Подробнее о переменных Времени и способах работы с ними читайте в Руководстве по переменным Времени.