Калькулятор

Как высчитать математическое выражение с использованием переменных и математических функций

Калькулятор

В боте можно производить любые арифметические вычисления. Делается это в поле "Назначение переменных при переходе"

При работе с калькулятором название переменной не может начинаться с цифры. Нельзя: <1_шаг>, а надо <шаг_1>.

Название переменной не может состоять из двух слов, используйте для разделения символ нижнего подчеркивания "_". Нельзя <Имя клиента>, а надо <Имя_клиента>

Как использовать в конструкторе.

В поле "Назначение переменных при переходе", чтобы обратиться к переменной, не нужно использовать #{}

Посчитать значение можно в поле: "Назначение переменных при переходе" (Рисунок 1)

Рисунок 1
Рисунок 2

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

Важно! Логические условия с переменными необходимо писать в поле переменная для сравнения!

Например, на рисунке ниже переход по стрелке осуществиться, если переменная НОМЕРТЕЛЕФОНА заполнена:

Рисунок 2

Константы

"E": число e

"PI": число PI

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

"+": сложение

"-"': вычитание

"*" умножение

"/": деление

"%'": остаток от деления

"^" "**": возведение в степень

"==" "!=" ">" "<" ">=" "<=": операторы сравнения

"and" "AND" "&&": логическое И

"or" "OR" "||": логическое ИЛИ

Поддерживаемые функции:

Математические

"random": случайное число. 2 параметра: нижняя граница и верхняя. Пример: random(-10,10)

"md5": посчитать хеш md5 от строки

"sha256": посчитать хеш sha256 от строки

"fac": факториал. 1 параметр: число

"log": логарифм. 2 параметра: число и база(по умолчанию e).

"min": минимальное число. неограниченно параметров. каждый параметр число. Пример: min(4, 2, 9, 6)

"max": максимальное число. неограниченно параметров. каждый параметр число. Пример: max(4, 2, 9, 6)

"int": приведение к целому числу. При этом дробная часть просто отсекается. Пример: int(1.8)

"is_int": проверяет, является ли строка числом или нет

"round": математическое округление числа. Пример: round(1.8). Разница между "int" и "round" показана на Рисунке 3:

Рисунок 3

"float": приведение к числу с плавающей запятой.

"pyt": эквивалент корня из (a a + b b)

"pow": возведение числа в степень. 2 параметра: число и степень. Пример: pow(5, 2)

"sin" "cos" "tan" "asin" "acos" "atan" "atan2": тригонометрические функции

"sqrt": квадратный корень. 1 параметр: число

"floor": целая часть от числа

"ceil": округление к большему

"abs": абсолютное значение(приведение к положительному числу)

"exp": возведение е в степень параметра

Уведомление о клике

"proxy": в данную функцию передается ссылка, функция возвращает ссылку с уведомлением о клике. Если передать после минут еще один параметр, не равный нулю, то ссылку будет одноразовая

"proxy_date": в данную функцию передается ссылка, функция возвращает ссылку с уведомлением о клике. Вторым и третьим параметром идут дата и время, когда ссылка перестанет действовать. Если передать после минут еще один параметр, не равный нулю, то ссылку будет одноразовая

"proxy_timeout": в данную функцию передается ссылка, функция возвращает ссылку с уведомлением о клике. дополнительный параметр количество минут, которые действует ссылка. Если передать после минут еще один параметр, не равный нулю, то ссылку будет одноразовая

Укорачиватель

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

proxy с колбеком - short без колбека proxy_timeout с колбеком - short_timeout без колбека proxy_date с колбеком - short_date без колбека

Работа с регулярными выражениями

Поиск в строке по регулярному выражению.

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

Например:

findall('.ru\/(.+)\/', 'https://payform.ru/ab252acn/', 0)

Результатом будет: ab252acn

Работа со строками

"substring": обрезка строки. 3 параметра - исходная строка и границы обрезки. 2 других параметра: обрезка слева и обрезка справа. Если второй параметр положительный, то это длинна относительно начала. Если отрицательный, то относительно конца. Если параметры невалидные, функция вернет пустую строку. Для обрезки с начала передайте только одно число. Пример:

substring('текст для обрезки с начала на 4 символа', 4) substring('текст для обрезки с 4 на 2 символа', 4, 6) substring('текст для обрезки с конца на 4 символа', 0, -4) substring('текст для обрезки с начала и с конца на 4 символа', 4, -4)

"endswith" проверяет, заканчивается строка определенно или нет. Первый параметр строка в которой ищется, второй — что ищется

"startswith" проверяет, начинается строка определенно или нет. Первый параметр строка в которой ищется, второй — что ищется

"len" вернет количество символов в строке. Пример: len("как прекрасен этот мир!"). Результат работы представлен на Рисунке 4:

Рисунок 4

"concat": конкатинация (сложение) строк, преданных в параметр.

"splitter": разделение строки на части. Первый параметр строка, второй разделитель, третий(необязательный) максимальное количество элементов. Функция возвращает массив элементов. Пример использования: elements = splitter('s, W, q', ',')

"lower": перевод строки к нижнему регистру.

"upper": перевод строки в верхний регистр.

"capitalize": первый символ строки с большой буквы.

"normalizePhone": приводит номер телефона к стандартному виду. Убирает все кроме цифр и, если телефон начинается с 8, меняет ее на 7. Пример: normalizePhone("+7978-999-99-99"). Результат работы представлен на Рисунке 5:

Рисунок 5

"replace": заменить вхождения строки в строку на другую строку. Принимает 4 параметра: строка в которой будет происходить замена, что заменить, на что заменить, сколько раз заменить(не обязательный параметр). Пример: replace("wwww2222ww", "w", "e", 1). Результат: ewww2222ww. Пример использования на рисунках ниже:

"base64" закодирует строку в формате base64

"base64decode" декодирует base64 в строку

"urlencode" закодирует строку, чтобы ее можно было передавать по http

Например: Ivan Ivanovich станет Ivan%20Ivanovich, а Anna&Maria станет Anna%26Maria

"select_random" - выбор случайного элемента. Первый параметр строка с элементами, второй делитель. Второй параметр по умолчанию равен '|'. Пример использования: select_random('первый элемент | второй элемент | еще элемент | и еще')

Работа с клиентами

"days_from_last_message": функция возвращает количество дней с момента последней реплики клиента. Создана для проверки попадания в 24часовое окно. d = days_from_last_message()

"free_client": снять ответственного оператора free_client()

"assign_to_user": назначить диалог оператору assign_to_user('email оператора')

"get_operator": получить email ответственного оператора get_operator('email оператора') Можно использовать для постановки задачи ответственному и т.д. или проверки есть ли ответственный оператор. Если ответственного нет, то вернется None.

Работа с буквами колонок

Если вам надо перевести букву колонки в цифру, можете воспользоваться функцией калькулятора c2n, если нужно перевести цифру в букву, то используйте n2c. Также вы можете прибавлять к буквам колонок смещение через функцию addCols, которая принимает первым параметром строку с буквой колонки, а второй смещение. Передайте отрицательное смещение, чтобы идти влево.

Пример:

Результат работы:

Работа со списками

Добавить в список add_to_list(номер списка)

Удалить из списка remove_from_list(номер списка)

Переместить в список move_to_list(номер списка)

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

Узнать количество людей в списке list_size(номер списка)

Работа с задачами

Функции работы с задачами возвращают статус выполнения операции True или идентификатор задачи в случае успеха. В случае неудачи возвращается False или None.

Создать задачу: create_task('email ответственного', 'название задачи', 'дата выполнения', 'описание')

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

Обновить задачу: update_task('номер задачи','email ответственного', 'название задачи', 'дата выполнения', 'описание')

Отметить задачу выполненной: update_task('номер задачи')

Удалить задачу: delete_task('номер задачи')

"if": Если.

3 параметра: условие, значение если условие верно, значение если условие ложно

Чтобы проверить не пустое ли значение переменной (не равно ли оно None или "") используйте следующую формулу: "#{value}" == "" где value название переменной Например, это может понадобиться при получении данных со стороннего ресурса через запросы.

Пример: ДНИМОЛЧАНИЯ_2 = if(ДНИМОЛЧАНИЯ_2 == 1, 1, 0). В таком случае, если существует переменная ДНИМОЛЧАНИЯ_2 со значением 1, то ее значение так и останется 1, а если она не существует, то будет 0. Удобно использовать перед математическими операциями, чтобы подстраховаться от пустых значений переменных. Или еще пример ИмяКлиента = if(ИмяКлиента == 1, Р1, if(ИмяКлиента == 2, Р2, if(ИмяКлиента == 3, Р3, 7))), где Р1, Р2, Р3 - переменные

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

Например: Сумма_Заказа = round(if(Количество >=100, if(Количество >=200, if(Количество >=300, if(Количество >=400, if(Количество >=500, if(Количество >=1000, if(Количество >=2000, if(Количество >=3000, if(Количество >=5000, 25*Количество, 30*Количество), 35*Количество), 40*Количество), 45*Количество), 50*Количество), 55*Количество), 60*Количество), 65*Количество), "Не могу посчитать... Вы ошиблись где-то при оформлении заказа. Попробуйте еще раз с самого начала.") 100) / 10

Максимальная длина выражения: 1000 символов

Результат работы такой формулы представлен на Рисунке 6, а пример заполнения полей - на Рисунке 7:

Рисунок 6
Рисунок 7