# Системные функции

{% hint style="success" %}
**Функция** - подпрограмма, которую можно вызвать. Результат выполнения функции подставляется в сообщение от бота. В функцию можно передать аргументы (параметры), от которых зависит результат выполнения функции.
{% endhint %}

{% hint style="info" %}
Арифметические операции:
{% endhint %}

Сумма чисе&#x43B;**:** `{{ sum(1, 2) }}`

Сумма пользовательских переменны&#x445;**:** `{{ sum($переменная1, $переменная2) }}`

Сумма нескольких значений: `{{ sum($переменная1, 1, 2) }}`

Псевдоним функци&#x438;**:** `{{ сумма(1, 2) }}`

Разность чисел `{{ diff(4, 2) }}`&#x20;

Разность пользовательских переменных: `{{ diff($переменная1, $переменная2) }}`

Разность нескольких значений: `{{ diff($переменная1, 1, 2) }}`

Псевдоним функции: `{{ разность(4, 2) }}`

Произведение чисел:`{{ multiplication(2, 2) }}`&#x20;

Произведение пользовательских переменных: `{{ multiplication($переменная1, $переменная2) }}`

Произведение нескольких значений: `{{ multiplication($переменная1, 1, 2) }}`

Псевдоним функции: `{{ произведение(2, 2) }}`

Деление чисел: `{{ div(4, 2) }}` -&#x20;

Деление пользовательских переменных: `{{ div($переменная1, $переменная2) }}`

Деление нескольких значений: `{{ div($переменная1, 4, 2) }}`

Псевдоним функции: `{{ деление(4, 2) }}`

Записать сумму переменных/чисел в переменную:\
`{{ setSumVariablesIntoVariable("сумма", "а", "б") }}`&#x20;

В переменную **`$cумма`** запишется сумма переменных **`$а`** и **`$б`**. В функцию передаются имена переменных в двойных кавычках или числа. Количество аргументов для передачи в функцию может быть до 100 шт.

{% hint style="info" %}
Работа с датами:
{% endhint %}

Вчера - `{{ date("d.m.Y", "yesterday") }}`&#x20;

Сегодня- `{{ date("d.m.Y", "today") }}`&#x20;

Завтра - `{{ date("d.m.Y", "tomorrow") }}`&#x20;

Послезавтра - `{{ date("d.m.Y", "+ 2 days") }}`&#x20;

Следующая среда - `{{ date("d.m.Y", "next wednesday") }}`&#x20;

Прошлая пятница - `{{ date("d.m.Y", "last friday") }}`&#x20;

Этот четверг - `{{ date("d.m.Y", "this thursday") }}`&#x20;

14 дней вперед - `{{ date("d.m.Y", "+ 14 days") }}`&#x20;

7 дней назад - `{{ date("d.m.Y", "- 7 days") }}`&#x20;

2 часа вперед - `{{ date("d.m.Y H:i:s", "+ 2 hours") }}`&#x20;

* **Часовой пояс по умолчанию UTC-0**

{% hint style="info" %}
Как обрезать часть строки:
{% endhint %}

`{{ substr($Переменная, 0, 3) }}`

где: 0 - номер символа с которого начать обрезание строки (важно! нумерация начинается с нуля, т.е. 0 - первый символ, 1 - второй символ, 2 - третий символ и т. д.); 3 - количество сиволов, которое нужно оставить в строке;

Например в переменной $Строка записано значение "abcdef"&#x20;

`{{ substr($Строка, 0, 3) }}` -> abc&#x20;

`{{ substr($Строка, 1, 2) }}` -> bc&#x20;

`{{ substr($Строка, 3) }}` -> def&#x20;

`{{ substr($Строка, -1, 1) }}` -> f&#x20;

`{{ substr($Строка, -2, 1) }}` -> e

С помощью этого решения можно, например, вырезать часть номера телефона, если он сохранён в переменной.

{% hint style="info" %}
Другое:
{% endhint %}

#### abs - абсолютное значение (модуль числа)

`{{ abs(-100) }}` – преобразует в положительное число 100

`{{ abs($число) }}` – преобразует число содержащееся в переменной «число» в положительное число

#### ceil - округление дроби в большую сторону

`{{ ceil(1.2) }}` – преобразует в целое число 2

`{{ ceil($число) }}` – преобразует число содержащееся в переменной «число» в целое число

#### floor - округление дроби в меньшую сторону

`{{ floor(1.9) }}` – преобразует в целое число 1

`{{ floor($число) }}` – преобразует число содержащееся в переменной «число» в целое число c округлением в меньшую сторону

#### max – поиск набольшего числа

`{{ max(1, 5) }}` – вернет число 5

`{{ max(1, 5, 100, 4) }}` – вернет число 100

`{{ max($число1, $число2, $число3) }}` – вернет наибольшее число содержащееся в переменных «число1», «число2», «число3»

`{{ max($число1, $число2, 100, 200) }}` – микс параметров, можно передавать «неограниченное» количество чисел и переменных

#### min – поиск наименьшего числа

`{{ min(1, 5) }}` – вернет число 1

`{{ min(1, 5, 100, 4) }}` – вернет число 1

`{{ min($число1, $число2, $число3) }}` – вернет наименьшее число содержащееся в переменных «число1», «число2», «число3»

`{{ min($число1, $число2, 100, 200) }}` – микс параметров, можно передавать «неограниченное» количество чисел и переменных

#### pow – возведение в степень

`{{ pow(2, 2) }}` – два в квадрате, вернет число 4

`{{ pow(2, 3) }}` – два в кубе, вернет число 8

`{{ pow(2) }}` – два в нулевой степени, вернет число 1

`{{ pow(($число, $степень) }}` – возведет число содержащееся в переменной «число» в степерь содержащейся в переменной «степень»

`{{ pow($число, 10) }}` – микс параметров

#### round – округление числа

`{{ round(1.123456789, 1) }}` – округлит число до 1.1

`{{ round(1.123456789, 2) }}` – округлит число до 1.12

`{{ round(1.123456789, 5) }}` – округлит число до 1.12345

`{{ round(1.49) }}` – округлит число до 1

`{{ round(1.5) }}` – округлит число до 2

`{{ round($число, $точность) }}` – округлит число содержащееся в переменной «число» с точностью содержащееся в переменной «точность»

`{{ round(1.123456789, $точность) }}` – микс праметров

#### sqrt – квадратный корень

`{{ sqrt(4) }}` – вернет 2

`{{ sqrt(100) }}` – вернет 10

`{{ sqrt(200) }}` – вернет 14.142135623731

`{{ sqrt($число) }}` – вычислит квадратный корень из числа содержащегося в переменной «число»

{% hint style="info" %}
Генератор случайных чисел и строк:
{% endhint %}

&#x20;`{{ rand() }}` - Сгенерировать случайное число

`{{ rand(5, 100) }}` - Сгенерировать случайное число от 5 до 100

`{{ strRandom() }}` - Сгенерировать случайную строку

&#x20;`{{ strRandom(20) }}` - Cгенерировать случайную строку длинной 20 символов

`{{ strRandom(20, true) }}` - Cгенерировать случайную строку длинной 20 символов заглавными буквами

{% hint style="info" %}
Сообщение для определенного мессенджера:
{% endhint %}

`{{ messageToTelegram("Сообщение") }}` - Сообщение в Telegram&#x20;

*Пример: `{{ messageToTelegram("Это сообщение отобразится только в Telegram") }}`*&#x20;

`{{ messageToViber("Сообщение") }}` - Сообщение в Viber&#x20;

*Пример: `{{ messageToViber("Это сообщение отобразится только в Viber") }}`*&#x20;

`{{ messageToWhatsApp("Сообщение") }}` - Сообщение в WhatsApp&#x20;

*Пример: `{{ messageToWhatsApp("Это сообщение отобразится только в WhatsApp") }}`*&#x20;

`{{ messageToFacebook("Сообщение") }}` - Сообщение в Facebook&#x20;

*Пример: `{{ messageToFacebook("Это сообщение отобразится только в Facebook") }}`*&#x20;

`{{ messageToIcq("Сообщение") }}` - Сообщение в ICQ&#x20;

*Пример: `{{ messageToIcq("Это сообщение отобразится только в ICQ") }}`*

{% hint style="info" %}
Счета:
{% endhint %}

`{{ getBalance("Код валюты") }}` - Получить баланс контакта&#x20;

*В гривне: `{{ getBalance("UAH") }}`*&#x20;

*В долларах: `{{ getBalance("USD") }}`*

`{{ getCartAmount() }}` – выводит общую стоимость товаров в корзине


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.onebot.tech/onebot-help/rabota-s-peremennymi/sistemnye-funkcii.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
