Выражения в @MenuBuilderBot

Выражения в @MenuBuilderBot

MegaHubTelegram

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


📜 Перевод представленных материалов на ваш родной язык может быть автоматически осуществлен при помощи переводчика Google. Перейдите по ссылке и выберите нужный язык в заголовке:
https://translate.googleusercontent.com/translate_c?depth=1&sl=ru&tl=es&u=https://telegra.ph/Expressions-in-MenuBuilderBot-RU-04-30



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


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

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


Например:

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%

%my_variable%

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

%refcount%
%userid%


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


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

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

{2 + 1}, {3 * 3}

2. Унарные операторы: +, -

{-1 * 3}

3. Деление с округлением до ближайшего целого числа:

{ 10 // 3 } ➨ 3

4. Степень (x в степени y): **

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

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


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


min(A, B, C, D...)

Выберет минимальное значение значение из списка.

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


max(A, B, C, D...)

Выберет максимальное значение значение из списка.

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


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


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


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 - позволяет изменять текст в сообщении, условии или на Inline кнопке в зависимости от того выполняется заданное условие или нет. Функция bool_symbn() (Boolean to Symbol New) в отличии от bool_symb() показывает результат с Новой Строки - позволяя выстраивать свои сообщения в столбик. Все возможности описанные для bool_symb() в равной степени относятся и к bool_symbn().

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


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


bool_symb можно использовать в текстах сообщений, в выражениях и заголовках inline кнопок. Данная функция может работать как со Строковыми, так и с Числовыми данными. Если в качестве параметров B и C подано число, то его можно будет использовать в вычислениях выражений. Параметр в B и С может формироваться разными способами: Текст, Число, Макрос переменной.


• Пример 1: Если нужно показать два вида сообщений (текста):

Если значение переменной mynum равно 1, то покажет ✅, в противном случае ❌.


• Пример 2: Когда нужно показать сообщение (текст) только если условие верно, оставьте вторые кавычки пустыми:

Если mynum равно 1, то покажет ✅, в противном случае не покажет ничего.


• Пример 3: Когда нужно показать сообщение (текст) только если в Цифровой переменной есть данные:

Если в переменной mynum есть какие-либо цифровые данные, то покажет ✅, в противном случае не покажет ничего.


• Пример 4: Когда нужно показать сообщение (текст) только если в Текстовой переменной есть данные:

Если в переменной mytext есть какие-либо текстовые данные, то покажет ✅, в противном случае не покажет ничего.


◾ int_symb()

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

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


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

• Пример 1: покажет 5 символов "😀" из максимальных 10:

Результат: 😀😀😀😀😀

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

Результат: 😡😡😡😡😡😡😡😡😡😡 +5


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

Результат: 🤯🤯🤯🤯🤯


◾ format_num()

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

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


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


• Пример 1: целые и дробные:


Если число разрядов в оригинальном числе больше чем указано в функции- они останутся без изменений.

• Пример 2: количество разрядов больше чем задано в функции:


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

• Пример 3: только дробные с параметром и без:


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


◾ addl()

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


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


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


• Пример 1: последовательный перебор (с шагом 1) номеров от 0 до 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: условие на кнопке

Если ячейка №1 не равна нулю и в ней содержится флаг, значит юзер подписан на рассылку №1

Если в ячейке №2 нет флага, значит юзер НЕ подписан на рассылку №2


Установить флаг в переменной:
flag_set(A, B)

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

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


• Пример 2: бесплатная подписка (бонусная кнопка, значение бонуса)

Установит флаг в ячейку №1 (например подписка на рассылку №1)


• Пример 3: покупка доступа (кнопка обмен1, в качестве значения начисления)

Установить флаг в ячейку №2 (например покупка доступа №2)


• Пример 4: Чтобы избежать двойной покупки лучше использовать условие

Проверит нету ли флага в ячейке №2 и если нету, то позволит дальнейшие действия.


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

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


• Пример 5: Отписка от рассылки

Удалит флаг в ячейке №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)}



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


Выражения используются в Условиях кнопок.

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

В выражениях можно использовать функции перменных Времени (если они возвращают числовое значение).

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


https://telegra.ph/Menu-Builder---All-Help-Materials-02-22

Report Page