EnotPRO Logo EnotPRO

math

Макрос !{math} вычисляет математические выражения. Поддерживает базовые арифметические операции, возведение в степень, скобки и переменные.

Где используется:

  • В любом тексте (сообщения, заголовки HTTP-запросов, тело запроса)
  • В настройках переменных (значение для SetVarCloud / SetVarLocal)
  • В условиях (для динамических диапазонов)

💡 Совет: Макрос удобен для подсчёта суммы, скидки, бонусов — любых вычислений внутри бота.

Синтаксис

!{math|выражение}

Правила:

  • Выражение может содержать числа, операторы, переменные (${...}) и другие макросы (!{...})
  • Пробелы в выражении игнорируются
  • Поддерживаются скобки для изменения приоритета

Примеры вызова:

!{math|2 + 2}
!{math|10 * 5 - 3}
!{math|${var.person.score} + 10}
!{math|!{random.number|min:1; max:6} * 100}
!{math|(10 + 5) * 2}

Поддерживаемые операторы

Оператор Описание Приоритет Пример Результат
+ Сложение 1 (низкий) 5 + 3 8
- Вычитание 1 10 - 4 6
* Умножение 2 (средний) 4 * 3 12
/ Деление 2 15 / 3 5
% Остаток от деления 2 10 % 3 1
^ Возведение в степень 3 (высокий) 2 ^ 3 8
** Возведение в степень (альтернатива) 3 2 ** 3 8
( ) Скобки (2 + 3) * 4 20

Приоритет операций (от высокого к низкому)

  1. Скобки ( )
  2. Возведение в степень ^ / **
  3. Умножение, деление, остаток от деления * / %
  4. Сложение, вычитание + -

Операции с одинаковым приоритетом выполняются слева направо.

Поддерживаемые типы данных

Тип Описание Пример
Целые числа Целочисленные значения 5, 42, -10
Дробные числа Числа с плавающей точкой 3.14, 0.5, -7.25

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

Использование переменных

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

Примеры:

Прибавить 10 к переменной пользователя

!{math|${var.person.score} + 10}

Вычислить скидку 15% от суммы

!{math|${var.person.amount} * 0.85}

Сравнить с порогом (хотя для условий лучше использовать Number)

!{math|${var.person.balance} - 100}

💡 Совет: Переменные должны содержать числовые значения. Если переменная пуста или содержит текст, вычисление может дать ошибку или некорректный результат.

Использование макросов внутри !{math}

Макросы можно вкладывать друг в друга. Внутренний макрос выполняется первым, его результат подставляется в выражение.

Примеры:

Случайное число от 1 до 6, умноженное на 100

!{math|!{random.number|min:1; max:6} * 100}

Текущий Unix timestamp, делённый на 3600 (часы)

!{math|!{time|value:now; output_format:unix} / 3600}

Комбинация нескольких макросов

!{math|!{random.number|min:1; max:10} + !{random.number|min:1; max:10}}

Примеры

Базовые арифметические операции

  • !{math|2 + 2} => 4
  • !{math|10 - 3} => 7
  • !{math|4 * 5} => 20
  • !{math|15 / 3} => 5
  • !{math|10 % 3} => 1
  • !{math|2 ^ 3} => 8

Приоритет операций

  • !{math|2 + 3 * 4} => 14 => Сначала умножение: 3*4=12, потом 2+12=14
  • !{math|(2 + 3) * 4} => 20 => Сначала скобки: 2+3=5, потом 5*4=20
  • !{math|2 ^ 3 * 2} => 16 => Сначала степень: 2^3=8, потом 8*2=16
  • !{math|10 - 3 - 2} => 5 => Слева направо: 10-3=7, потом 7-2=5

С переменными

Предположим, у пользователя есть переменная score = 25

!{math|${var.person.score} + 5}

Результат: 30

!{math|${var.person.score} * 2 - 10}

Результат:* 40

!{math|(${var.person.score} + 10) / 5}

Результат: 7

С макросами

Случайный бонус от 1 до 10% к текущему счёту

!{math|${var.person.score} * (1 + !{random.number|min:1; max:10} / 100)}

Текущий час в 24-часовом формате

!{math|!{time|value:now; output_format:unix} / 3600 % 24}

Ошибки и их решение

Ошибка Причина Решение
Пустой результат В выражении есть текст или пустая переменная Проверьте, что все переменные содержат числа
NaN (Not a Number) Деление на ноль Добавьте проверку перед делением
Неверный результат Неправильный приоритет операций Используйте скобки для явного указания порядка
Макрос не выполняется Неверный синтаксис Убедитесь, что выражение заключено в !{math...}
© 2025 EnotPRO. Все права защищены.