Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 74 Следующий »


Функции общего назначения

del(varName string)

Назначение: удаление локальной или модульной переменной.

Аргументы:

  1. varName - название переменной в виде строки. Может начинаться с префикса области видимости переменной. Если префикс опущен то считается, что переменная локальная.

Возвращаемое значение: отсутствует.

$localVar = 123
#moduleVar = true
del("$localVar")   // Удаляет локальную переменную $localVar
del("localVar")    // Тоже самое что и del("$localVar")
del("#moduleVar")  // Удаляет переменную с областью видимости в пределах модуля 

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

math.pos(num mixed) number

Назначение: фактически преобразует аргумент к числу. Эквивалент унарной операции "+".

Аргументы:

  1. num - произвольное значение которое будет преобразовано к числу.

Возвращаемое значение: число.

$a = math.pos(true)  // $a будет равно 1
$a = math.pos(false) // $a будет равно 0
$a = math.pos(nil)   // $a будет равно 0
$a = +true           // $a будет равно 1, то же что и math.pos(true)

math.neg(num number) number

Назначение: меняет знак числа. Эквивалент унарной операции "-".

Аргументы:

  1. num - произвольное число у кторого изменится знак на противоположный.

Возвращаемое значение: число со знаком обратному исходному.

$a = math.neg(-1) // $a будет равно 1
$a = math.neg(1)  // $a будет равно -1
$a = math.neg(0)  // $a будет равно 0
$a = -(-10)       // $a будет равно 10, то же что и math.neg(-10)

math.inv(num number) number

Назначение: инверсия бит числа. Эквивалент унарной операции "~".

Аргументы:

  1. num - произвольное число у кторого инвертируем биты.

Возвращаемое значение: инвертированное число.

$a = math.inv(5) // $a равно 3
$a = ~5          // то же, что и предыдущая строка

math.not(num number) bool

Назначение: логическое отрицание числа. Эквивалент унарной операции "!".

Аргументы:

  1. num - произвольное число.

Возвращаемое значение: true если num не равно 0 и false в противном случае.

$a = math.not(5) // $a равно false
$a = math.not(0) // $a равно true
$a = !0          // то же, что и предыдущая строка

math.add(num1 number, num2 number, precision int = 12) number

Назначение: сложение чисел. Эквивалент бинарной операции "+".

Аргументы:

  1. num1 - первое слагаемое.
  2. num2 - второе слагаемое.
  3. precision - точность вычислений, количество цифр после запятой. Значение по умолчанию 12, масимальное - 100.

Возвращаемое значение: сумма чисел.

$a = math.add(1.5, 3.5)         // $a равно 5
$a = 1.5 + 3.5                  // то же, что и предыдущая строка
$a = math.add(1.000006, 2.1, 5) // $a равно 3.10001

math.sub(num1 number, num2 number, precision int = 12) number

Назначение: разность чисел. Эквивалент бинарной операции "-".

Аргументы:

  1. num1 - уменьшаемое.
  2. num2 - вычитаемое.
  3. precision - точность вычислений, количество цифр после запятой. Значение по умолчанию 12, масимальное - 100.

Возвращаемое значение: разность чисел.

$a = math.sub(1.5, 3.5)         // $a равно -2
$a = 1.5 - 3.5                  // то же, что и предыдущая строка
$a = math.sub(2.100006, 1.1, 5) // $a равно 1.00001

math.mul(num1 number, num2 number, precision int = 12) number

Назначение: произведение чисел. Эквивалент бинарной операции "*".

Аргументы:

  1. num1 - первый множитель.
  2. num2 - второй множитель.
  3. precision - точность вычислений, количество цифр после запятой. Значение по умолчанию 12, масимальное - 100.

Возвращаемое значение: произведение чисел.

$a = math.mul(1.5, 3.5)         // $a равно 5.25
$a = 1.5 * 3.5                  // то же, что и предыдущая строка
$a = math.mul(1.2345, 1.234, 5) // $a равно 1.52337

math.div(num1 number, num2 number, precision int = 12) number

Назначение: частное чисел. Эквивалент бинарной операции "/".

Аргументы:

  1. num1 - делимое.
  2. num2 - делитель.
  3. precision - точность вычислений, количество цифр после запятой. Значение по умолчанию 12, масимальное - 100.

Возвращаемое значение: частное чисел.

$a = math.div(1.5, 3.5) // $a равно 0.428571428571
$a = 1.5 / 3.5          // то же, что и предыдущая строка
$a = math.div(1, 3, 5)  // $a равно 0.33333

math.idiv(num1 number, num2 number) int

Назначение: целочисленное деление чисел. Эквивалент бинарной операции "\".

Аргументы:

  1. num1 - делимое.
  2. num2 - делитель.

Возвращаемое значение: целая часть частного чисел.

$a = math.idiv(2.5, 0.3) // $a равно 8
$a = 2.5 \ 0.3           // то же, что и предыдущая строка

math.mod(num1 number, num2 number, precision int = 12) number

Назначение: остаток от деления двух чисел. Эквивалент бинарной операции "%".

Аргументы:

  1. num1 - делимое.
  2. num2 - делитель.
  3. precision - точность вычислений, количество цифр после запятой. Значение по умолчанию 12, масимальное - 100.

Возвращаемое значение: остаток от деления.

$a = math.mod(3.5, 1.5)    // $a равно 0.5
$a = 3.5 % 1.5             // то же, что и предыдущая строка
$a = math.mod(1/3, 2/7, 5) // $a равно 0.04762

Функции для работы со строками

str.len(str string) int

Назначение: определение длины строки в символах.

Аргументы:

  1. str - строка длину которой необходимо определить.

Возвращаемое значение: целое число равное количеству символов в строке.

$str = "Какая-то строка"
$len = str.len($str) // $len будет содержать 15

str.lower(str string) string

Назначение: преобразовапние символов строки в нижний регистр.

Аргументы:

  1. str - строка, которую необходимо преобразовать.

Возвращаемое значение: строка все символы которой находятся в нижнем регистре.

$str = "СтРоКа"
$lower = str.lower($str) // $lower будет содержать "строка" 

str.upper(str string) string

Назначение: преобразование символов строки в верхний регистр.

Аргументы:

  1. str - строка, которую необходимо преобразовать.

Возвращаемое значение: строка все символы которой находятся в верхнем регистре.

$str = "СтРоКа"
$upper = str.upper($str) // $lower будет содержать "СТРОКА" 

str.ucfirst(str string) string

Назначение: преобразование первого символа строки в верхний регистр.

Аргументы:

  1. str - строка, первый символ которой необходимо преобразовать.

Возвращаемое значение: строка в которой первый символ записан в верхнем регистре.

$str = str.ucfirst("строка") // $str будет содержать "Строка" 

str.lcfirst(str string) string

Назначение: преобразование первого символа строки в нижний регистр.

Аргументы:

  1. str - строка, первый символ которой необходимо преобразовать.

Возвращаемое значение: строка в которой первый символ записан в нижнем регистре.

$str = str.ucfirst("Строка") // $str будет содержать "строка" 

str.letter(str string, index int) string

Назначение: получение указанного символа строки.

Аргументы:

  1. str - строка, символ которой требуется получить.
  2. index - целое число определяющее позицию символа в строке начиная с 0. Если это число отрицательное то отсчёт начинается с конца строки.

Возвращаемое значение: строка соответствующая указанному символу, либо пустая строка если символа с такой позицией не существует.

$str = "Слово"
$firstLetter = str.letter($str, 0)  // Первая буква
$lastLetter = str.letter($str, -1)  // Последняя буква

str.first(str string, index int = 0) string

Назначение: получение указанного символа строки начиная с начала строки.

Аргументы:

  1. str - строка, символ которой требуется получить.
  2. index - целое число определяющее позицию символа с начала строки начиная с 0. При этом знак числа игнорируется. Значение по умолчанию 0 (первый символ).

Возвращаемое значение: строка соответствующая указанному символу, либо пустая строка если символа с такой позицией не существует.

$str = "Слово"
$firstLetter = str.first($str)      // Первая буква
$secondLetter = str.first($str, 1)  // Вторая буква

str.last(str string, index int = 0) string

Назначение: получение указанного символа строки начиная с конца строки.

Аргументы:

  1. str - строка, символ которой требуется получить.
  2. index - целое число определяющее позицию символа с конца строки начиная с 0. При этом знак числа игнорируется. Значение по умолчанию 0 (последний символ).

Возвращаемое значение: строка соответствующая указанному символу, либо пустая строка если символа с такой позицией не существует.

$str = "Слово"
$lastLetter = str.last($str)       // Последняя буква
$penultLetter = str.last($str, 1)  // Предпоследняя буква

str.concat(str1 string, str2 string) string

Назначение: объединяет две строки в одну.

Аргументы:

  1. str1 - строка которая объединяется.
  2. str2 - строка с которой объединяются.

Возвращаемое значение: новая строка состоящая из первой строки справа от которой добавлена вторая строка.

$str1 = "один"
$str2 = "два"
$str = str.concat($str1, $str2) // $str будет содержать "одиндва" 

str.join(arr Collection, separator string = "") string

Назначение: объединяет элементы коллекции (кортежа, списка или ассоциативного массива) в строку.

Аргументы:

  1. arr - коллекция элементов для объединения.
  2. separator - разделитель элементов коллекции. По умолчанию равен пустой строке.

Возвращаемое значение:  новая строка составленная из всех элементов коллекции отделённых между собой разделителем.

$str = str.join([1, 2, 3, 4, 5], "-")             // $str будет содержать "1-2-3-4-5"
$str = str.join(("a", "b", "c"))                  // $str будет содержать "abc"
$str = str.join({"a": "один", "b": "два"}, " + ") // $str будет содержать "один + два"
$str = str.join(["одно"], "/")                    // $str будет содержать "одно"
$str = str.join([], "/")                          // $str будет содержать ""

str.split(str string, separator string = "", limit int = 0) List

Назначение: разбивает строку на части использую separator в качестве разделителя.

Аргументы:

  1. str - строка для разделения.
  2. separator - разделитель. Если равен пустой строке, то разбиение происходит посимвольно.
  3. limit - необязательный параметр равный максимальному количеству частей на которые будет разбита строка. Если limit равен 0, то без ограничений. Если limit является положительным, возвращаемый список будет содержать максимум limit элементов, при этом последний элемент будет содержать остаток строки str. Если limit отрицателен, то будут возвращены все компоненты, кроме последних -limit.


Возвращаемое значение:  список подстрок на которые была разбита строка.

$letters = str.split("абвгде")             // Получили список букв слова
$words = str.split("один два три", " ")    // Получили список слов
$words = str.split("один два три", " ", 1) // words содержит ["один", "два три"]

Функции для работы с датой и временем

dt.add(d1 int|string, d2 int|string) string

Назначение: складывает две даты, заданные в виде строки либо как число секунд.

  • Если хотя бы один из аргументов функции число секунд, то это число будет прибавлено к числу секунд другой даты.
  • Если обе даты заданы строкой, то результат определяется по формуле d1 + abs(secondsOf(d1) - secondsOf(d2)), где abs - модуль числа (положительное значение), secondsOf - это дата представленная как количество секунд прошедших с начала 1970 года (даты до этого времени представлены отрицательным значением). 

Аргументы:

  1. d1 - строка представляющая собой дату в одном из допустимых форматов или целое число соответствующее количеству секунд.
  2. d2 - аналогично первому аргументу.

Возвращаемое значение: возвращает новую дату и время в виде строки.

$d = dt.add("2022-01-01 12:30:00", 59)                    // $d содержит строку "2022-01-01 12:30:59" 
$d = dt.add(3600, "2022-01-01 12:30:00")                  // $d содержит строку "2022-01-01 13:30:00"
$d = dt.add("2022-01-01 00:00:00", "2022-01-02 00:00:00") // $d содержит строку "2022-01-03 00:00:00"

dt.sub(d1 int|string, d2 int|string) int|string

Назначение: вычисляет разность двух дат, заданных в виде строк либо количеством секунд.

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

Аргументы:

  1. d1 - строка представляющая собой дату в одном из допустимых форматов или целое число соответствующее количеству секунд.
  2. d2 - аналогично первому аргументу.

Возвращаемое значение: возвращает новую дату и время в виде строки либо число секунд - разность дат.

$d = dt.sub(100, 50)                                      // $d содержит 50
$d = dt.sub("2022-01-01 12:30:00", 3600)                  // $d содержит строку "2022-01-01 11:30:00"
$d = dt.sub(3600, "2022-01-01 12:30:00")                  // Такой вызов недопустим и приведёт к остановке программы
$d = dt.sub("2022-01-01 01:00:00", "2022-01-01 00:00:00") // $d содержит 3600

date.nearest(day int) string

Назначение: возвращает ближайшую к текущей дату по заданному дню.

Аргументы:

  1. day - число дней для определения ближайшей даты.

Возвращаемое значение: возвращает ближайшую к day дату.

// Допустим сейчас 2022-12-20
$d = date.nearest(25) // $d содержит 2022-12-25
$d = date.nearest(10) // $d содержит 2023-01-10

date.future(day int) string

Назначение: возвращает дату соответствующую указанному дню в следующем месяце.

Аргументы:

  1. day - число дней для определения даты в будущем.

Возвращаемое значение: дата в будущем.

// Допустим сейчас 2022-12-20
$d = date.future(25) // $d содержит 2023-01-25
$d = date.future(10) // $d содержит 2023-01-10

date.past(day int) string

Назначение: возвращает дату соответствующую указанному дню в прошлом месяце.

Аргументы:

  1. day - число дней для определения даты в прошлом.

Возвращаемое значение: дата в прошлом.

// Допустим сейчас 2022-12-20
$d = date.past(25) // $d содержит 2022-11-25
$d = date.past(10) // $d содержит 2022-11-10

time.nearest(minute int) string

Назначение: возвращает ближайшее к текущему время по заданному количеству минут.

Аргументы:

  1. minute - число минут для определения ближайшего времени.

Возвращаемое значение: возвращает ближайшее к minute время.

// Допустим сейчас 23:30:00
$t = time.nearest(45) // $t содержит 23:45:00
$t = time.nearest(15) // $t содержит 00:15:00

time.future(minute int) string

Назначение: возвращает время соответствующее указанному числу минут в следующем часе.

Аргументы:

  1. minute - число минут для определения времени в будущем.

Возвращаемое значение: время в будущем.

// Допустим сейчас 23:30:00
$t = time.future(45) // $t содержит 00:45:00
$t = time.future(15) // $t содержит 00:15:00

time.past(minute int) string

Назначение: возвращает время соответствующее указанному числу минут в прошедшем часе.

Аргументы:

  1. minute - число минут для определения времени в прошлом.

Возвращаемое значение: время в прошлом.

// Допустим сейчас 23:30:00
$t = time.past(45) // $t содержит 22:45:00
$t = time.past(15) // $t содержит 22:15:00

Функции для работы с фактами

fact.save(context string, factName string, factValue mixed, botId string = nil, clientId string = nil)

Назначение: сохраняет факт в базе фактов.

Аргументы:

  1. context - строка определяющая контекс в рамках которого существует факт.
  2. factName - строка определяющая название факта.
  3. factValue - любое значение определяющее содержимое факта.
  4. botId - идентификатор бота. По умолчанию не задан.
  5. clientId - идентификатор клиента, По умолчанию не задан.

Возвращаемое значение: отсутствует.

fact.save("место", "город", "Екатеринбург")                    // Факт доступный всем ботам компании       
fact.save("место", "город", "Екатеринбург", nil, @clientId)    // Факт с привязкой к клиенту
fact.save("место", "город", "Екатеринбург", @botId)            // Факт с привязкой к боту
fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Факт с привязкой к боту и клиенту

fact.load(context string, factName string, botId string = nil, clientId string = nil) mixed

Назначение:  извлекает факт из базы фактов.

Аргументы:

  1. context - строка определяющая контекс в рамках которого существует факт.
  2. factName - строка определяющая название факта.
  3. botId - идентификатор бота. По умолчанию не задан.
  4. clientId - идентификатор клиента, По умолчанию не задан.

Возвращаемое значение: содержимое факта.

fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Сохраняет факт с привязкой к боту и клиенту
$city = fact.load("место", "город", @botId, @clientId)         // Загружаем факт в переменную. $city содержит "Екатеринбург"

fact.delete(context string, factName string, botId string = nil, clientId string = nil)

Назначение:  удаляет факт из базы фактов.

Аргументы:

  1. context - строка определяющая контекс в рамках которого существует факт.
  2. factName - строка определяющая название факта.
  3. botId - идентификатор бота. По умолчанию не задан.
  4. clientId - идентификатор клиента, По умолчанию не задан.

Возвращаемое значение: отсутствует.

fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Сохраняет факт с привязкой к боту и клиенту
$city = fact.load("место", "город", @botId, @clientId)         // Загружаем факт в переменную. $city содержит "Екатеринбург"
fact.delete("место", "город", @botId, @clientId)               // Удаляем факт.
$city = fact.load("место", "город", @botId, @clientId)         // Пытаемся загрузить удалённый факт. Теперь $city содержит nil.

fact.query() FactQuery

Назначение: возвращает экземпляр FactQuery для построения и выполнения запросов к базе фактов.

Аргументы: отсутствуют.

Возвращаемое значение: объект FactQuery.

// Добавили пару фактов в базу
fact.save("место", "страна", "Россия")
fact.save("место", "город", "Екатеринбург")

// Загрузили в $places список мест отсортированных по имени факта в порядке убывания:
// [{"name": "город", "value": "Россия"}, {"name": "страна", "value": "Екатеринбург"}]
$places = fact.query().
    select("name,value").
    where("context", "=", "место").
    sortBy("-name").
    rows()

fact.cond() FactQueryCondition

Назначение: возвращает экземпляр FactQueryCondition для построения составных условий в запросах к базе фактов.

Аргументы: отсутствуют.

Возвращаемое значение: объект FactQueryCondition.

// Добавили факты в базу
fact.save("города", "екатеринбург", "Екатеринбург")
fact.save("города", "москва", "Москва")
fact.save("города", "санкт-петербург", "Санкт-Петербург")
fact.save("города", "новосибирск", "Новосибирск")

// Найдём один город начинающийся с буквы "м" или с буквы "т" и не равный городам "Екатеринбург" и "Новосибирск"
$city = fact.query().
    select("value").
    where("context", "=", "города").
    where(fact.cond().
        where("name", "^@", "м").
        orWhere("name", "^@", "т")).
    where("name", "not in", ("екатеринбург", "новосибирск")).
    one()

Объект FactQuery

Используя методы этого объекты вы можете выполнять и строить разнообразные запросы к базе фактов. База фактов представляет собой список записей. Каждая запись представляет собой единичный факт состоящий из следующих частей (полей):

  • Контекст (context). Произвольная строка длина которой не превышает 255 символов. Обозначает некоторую предметную область в рамках которой существует факт. Может участвовать в поиске.
  • Имя факта (name). Произвольная строка длина которой не превышает 255 символов. Служит для идентификации факта в заданном контексте. Может участвовать в поиске.
  • Значение факта (value). Любое значение. Это собственно и есть та информация которую мы трактуем как факт. Не может участвовать в поиске (технически может, но результат недетерминирован).
  • Идентификатор бота (botId). Может быть задан при сохранении факта с целью привязки факта к боту. Может участвовать в поиске.
  • Идентификатор клиента (clientId). Может быть задан при сохранении факта с целью привязки факта к клиенту. Может участвовать в поиске.

select(fields string|Collection) FactQuery

Назначение: задаёт список полей из базы фактов значения которых следует вернуть в результате запроса. Если метод select не вызыался, то будут возвращены поля context,name и value.

Аргументы:

  1. fields - строка содержащая список неободимых полей разделённых запятой либо коллекция этих полей.

Возвращаемое значение: тот же объект FactQuery.

$facts = fact.query().rows()                               // select не вызван возвращаем все поля.
$facts = fact.query().select(["value", "context"]).rows()  // Возвращаем список фактов для которых нам нужны только value и context.
$facts = fact.query().select("botId").rows()               // Возвращаем только поле botId к которым привязаны факты.

where(field string, operator string, value mixed) FactQuery

Назначение: задаёт условие поиска фактов. Несколько методов where объединяются по принципу логического "И", т.е. все условия должны быть выполнены. Метод where равносилен методу andWhere(field, operator, value).

Аргументы:

  1. field - название поля для которого задаётся условие, т.е. первый аргумент операции operator.
  2. operator - оператор обозначающий операцию выполняющуюся над field. Список доступных операций смотри ниже.
  3. value - второй аргумент операции.

Возвращаемое значение: тот же объект FactQuery.

Список доступных операций:

  1. "=" проверка, что field равно value.
  2. "!=" или "<>" проверка на неравенство, что field не равно value.
  3. ">" проверяет, что field больше value.
  4. "<" проверяет, что field меньше value.
  5. ">=" проверяет, что field больше или равно value.
  6. "<=" проверяет, что field меньше или равно value.
  7. "^@" или "startsWith" ищет совпадение строки value с началом field. Поиск регистрозависимый.
  8. "~" проверяет соответствие field регулярному выражению value. Поиск регистрозависимый.
  9. "!~" проверяет несоотвествие field регулярному выражению value. Поиск регистрозависимый.
  10. "~*" проверяет соответствие field регулярному выражению value. Поиск регистронезависимый.
  11. "!~*" проверяет несоотвествие field регулярному выражению value. Поиск регистронезависимый.
  12. "in" проверяет совпадение field хотя бы с одним значением в коллекции value. 
  13. "not in" проверяет несовпадение field со всеми значениями из коллекции value.
// Ищем факты у которых context содержит подстроку test
$facts = fact.query().
    select("name,value").
    where("context", "~", "^.*test.*$").
    rows()

andWhere(field string, operator string, value mixed) FactQuery

Эквивалентен where(field, operator, value).

orWhere(field string, operator string, value mixed) FactQuery

Аналогичен where, с той лишь разницей, что несколько вызовов этого метода объединяются по принципу логического "ИЛИ", т.е. должно выполняться хотя бы одно условие.

where(cond FactQueryCondition) FactQuery

Назначение: задаёт сложное (вложенное) условие. Несколько вызвов метода объединяются по принципу логического "И". Эквивалентен методу andWhere(cond).

Аргументы:

  1. cond - объект FactQueryCondition определяющий сложносоставное условие.

Возвращаемое значение: тот же объект FactQuery.

// Ищем факты у которых context содержит подстроку test и при этом name равен "слово" или name начинается на "оп".
$facts = fact.query().
    select("name,value").
    where("context", "~", "^.*test.*$").
    andWhere(fact.cond().
        where("name", "=", "слово").
        orWhere("name", "^@", "оп")).
    rows()

andWhere(cond FactQueryCondition) FactQuery

Эквивалентен where(cond)

orWhere(cond FactQueryCondition) FactQuery

Аналогичен where(cond), с той лишь разницей, что несколько вызовов этого метода объединяются по принципу логического "ИЛИ", т.е. должно выполняться хотя бы одно условие.

sortBy(fields string|Collection) FactQuery

Назначение: задаёт сортирову фактов по указанным полям.

Аргументы:

  1. fields - строка содержащая список полей (через запятую) по которым следует отсортировать факты либо коллекция содержащая названия полей. Каждое поле может содержать префикс "+" для сортировки по возрастанию или "-" для сортировки по убыванию. Если префикс не указан, то используется сортировка по возрастанию. 

Возвращаемое значение: тот же объект FactQuery. 

// Получаем все факты для бота с двойной сортировкой: 
// сначала по контексту по возрастанию (т.е. в алфавитном порядке)
// и далее по имени факта по убыванию.
$facts = fact.query().
    select("name,value").
    where("botId", "=", @botId)
    sortBy("+context,-name"). // можно также использовать коллеции. Например, sortBy(["+context", "-name"])
    rows()

limit(limit int) FactQuery

Назначение: ставит ограничение на максимальное количество извлекаемых фактов.

Аргументы:

  1. limit - целое число определяющее лимит на количество извлекаемых фактов.

Возвращаемое значение: тот же объект FactQuery. 

// Получаем первые 10 фактов
$facts = fact.query().
    select("name,value").
    sortBy("name").
    limit(10).
    rows()

skip(count int) FactQuery

Назначение: задаёт количество фактов которые следует пропустить при поиске.

Аргументы:

  1. count - целое число определяющее количество фактов для пропуска.

Возвращаемое значение: тот же объект FactQuery. 

// Пропускаем 5 первых фактов и извлекаем следующие 10
$facts = fact.query().
    select("name,value").
    sortBy("name").
    skip(5).
    limit(10).
    rows()

one() mixed

Назначение: возвращает первое указанное через select поле первого найденного факта.

Аргументы: отсутствуют.

Возвращаемое значение: значение поля.

// Извлекает имя первого найденного факта
$firstFactName = fact.query().
    select("name,value").        // value хоть и указано, но будет проигнорировано
    one()

column() List

Назначение: возвращает список состоящий из всех значений первого выбранного поля найденных фактов.

Аргументы: отсутствуют.

Возвращаемое значение: список значений поля.

// Извлекает список имён всех найденных фактов
$names = fact.query().
    select("name,value").        // value хоть и указано, но будет проигнорировано
    column()

row() Map

Назначение: возвращает все выбранные поля в виде ассоциативного массива для первого найденного факта.

Аргументы: отсутствуют.

Возвращаемое значение: значения всех полей первого факта.

// Извлекает имя и значение первого найденного факта
$names = fact.query().
    select("name,value").
    row()

rows() List<Map>

Назначение: возвращает список всех найденных фактов. Каждый факт возвращается как ассоциативный массив ключами которого являются поля факта, а значениями - значения полей.

Аргументы: отсутствуют.

Возвращаемое значение: значения всех полей всех фактов.

// Извлекает имя и значение всех фактов
$names = fact.query().
    select("name,value").
    rows()

Объект FactQueryCondition

Используйте методы этого объекта чтобы строить сложные вложенные условия к базе фактам.

where(field string, operator string, value mixed) FactQueryCondition

Аналогичен методу where(field string, operator string, value mixed) объекта FactQuery.

andWhere(field string, operator string, value mixed) FactQueryCondition

Аналогичен методу andWhere(field string, operator string, value mixed) объекта FactQuery.

orWhere(field string, operator string, value mixed) FactQueryCondition

Аналогичен методу orWhere(field string, operator string, value mixed) объекта FactQuery.

and(field string, operator string, value mixed) FactQueryCondition

Аналогичен методу andWhere(field string, operator string, value mixed) объекта FactQuery.

or(field string, operator string, value mixed) FactQueryCondition

Аналогичен методу orWhere(field string, operator string, value mixed) объекта FactQuery.

where(cond FactQueryCondition) FactQueryCondition

Аналогичен методу where(cond FactQueryCondition) объекта FactQuery.

andWhere(cond FactQueryCondition) FactQueryCondition

Аналогичен методу andWhere(cond FactQueryCondition) объекта FactQuery.

orWhere(cond FactQueryCondition) FactQueryCondition

Аналогичен методу orWhere(cond FactQueryCondition) объекта FactQuery.

and(cond FactQueryCondition) FactQueryCondition

Аналогичен методу andWhere(cond FactQueryCondition) объекта FactQuery.

or(cond FactQueryCondition) FactQueryCondition

Аналогичен методу orWhere(cond FactQueryCondition) объекта FactQuery.

Функции по работе с очередью сообщений пользователя

queue.size() int

Назначение: определение размера очереди сообщений пользователя.

Аргументы: отсутствуют.

Возвращаемое значение: число сообщений пользователя.

$messageCount = queue.size() // $messageCount содержит число сообщений пользователя за всё время диалога

queue.last() ?UserMessage

Назначение: возвращает последнее сообщение пользователя либо nil, если очередь сообщений пуста.

Аргументы: отсутствуют.

Возвращаемое значение: объект UserMessage или nil.

$lastMessage = queue.last() // $lastMessage содержит последнее на данный момент сообщение пользователя

queue.first() ?UserMessage

Назначение: возвращает первое сообщение пользователя либо nil, если очередь сообщений пуста.

Аргументы: отсутствуют.

Возвращаемое значение: объект UserMessage или nil.

$firstMessage = queue.first() // $firstMessage содержит первое сообщение пользователя

queue.nth(index int) ?UserMessage

Назначение: возвращает сообщение пользователя по его порядковому номеру, начиная с 1.

Аргументы:

  1. index - порядковый номер сообщения пользователя.

Возвращаемое значение: объект UserMessage или nil.

$message = queue.nth(1) // $message содержит первое сообщение пользователя
$message = queue.nth(5) // $message содержит пятое сообщение пользователя

queue.lastNth(index int) ?UserMessage

Назначение: возвращает сообщение пользователя по его порядковому номеру считая с конца очереди. Последнее сообщение соответствует порядковому номеру 1.

Аргументы:

  1. index - порядковый номер сообщения пользователя считая с конца очереди.

Возвращаемое значение: объект UserMessage или nil.

$message = queue.lastNth(1) // $message содержит последнее сообщение пользователя
$message = queue.lastNth(5) // $message содержит пятое с конца очереди сообщение пользователя

Объект UserMessage

Методы этого объекта позволяют получить информацию о конкретном сообщении пользователя.

isEmpty() bool

Назначение: определяет пустое ли сообщение.

Аргументы: отсутствуют.

Возвращаемое значение: true, если сообщение пустое и false в противном случае.

$isEmpty = queue.last().isEmpty() // $isEmpty содержит true, если последнее сообщение пользователя пустое и false в противном случае

hasAttachments() bool

Назначение: определяет есть ли вложения в данном сообщении.

Аргументы: отсутствуют.

Возвращаемое значение: true, если сообщение имеет вложения и false в противном случае.

$hasAttachments = queue.first().hasAttachments() // $hasAttachments содержит true, если первое сообщение пользователя имеет вложения и false в противном случае

Функции для работы с таймером

timer.start(time int, nodeId string) string

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

Аргументы:

  1. time - время в секундах.
  2. nodeId - идентификатор блока для перехода после завершения отсчёта.

Возвращаемое значение: идентификатор таймера.

$timerId = timer.start(60, "760b9732-4bfb-4846-a348-faae5138fcb2") // $timerId содержит уникальный идентификатор таймера на 60 секунд

timer.stop(timerId string)

Назначение: останавливает (удаляет) таймер обратного отсчёта.

Аргументы:

  1. timerId - идентификатор таймера.

Возвращаемое значение: отсутствует.

$timerId = timer.start(60, "760b9732-4bfb-4846-a348-faae5138fcb2")
timer.stop($timerId) // останавливаем (удаляем) таймер

Функции для работы с текстом на естественном языке (NLP)

nlp.parse(message string|UserMessage) Sentence

Назначение: парсит текст на естественном языке. 

Аргументы:

  1. message - текст на естественном языке или объект UserMessage.

Возвращаемое значение: объект Sentence содержащий информацию о всех намерениях и сущностях исходного сообщения.

$sentence = nlp.parse(queue.first()) // парсим первое сообщение пользователя

nlp.join(message1 string|UserMessage, message2 string|UserMessage) Sentence

Назначение: объединяет два текста на естественном языке в одно и затем парсит его.

Аргументы:

  1. message1 - текст на естественном языке или объект UserMessage.
  2. message2 - текст на естественном языке или объект UserMessage.

Возвращаемое значение: объект Sentence содержащий информацию о всех намерениях и сущностях объединённого сообщения.

$sentence = nlp.join(queue.lastNth(2), queue.lastNth(1)) // объединяем предпоследнее и последнее сообщения пользователя и затем парсим его  

nlp.setPerception($sentence Sentence)

Назначение: позволяет установить сообщение пользователя для обработки в других узлах (блоках) схемы бота. 

Аргументы:

  1. sentence - объект Sentence содержащий информацию о намерениях и сущностях некоторого сообщения.

Возвращаемое значение: отсутствует.

$sentence = nlp.join(queue.lastNth(2), queue.lastNth(1)) // объединяем предпоследнее и последнее сообщения пользователя и затем парсим его
nlp.setPerception($sentence)                             // Теперь остальные узлы схемы будут работать с cообщением $sentence

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

sys.sleep(microseconds int)

Назначение: останавливает работу бота на указанное количество микросекунд. Если количество микросекунд превышает 1 минуту, то пауза будет уменьшена до 1 минуты.

Аргументы:

  1. microseconds - число микросекунд паузы.

Возвращаемое значение: отсутствует.

sys.sleep(3_000_000) // Пауза в 3 секунды

Функции для работы с GPT-3

gpt3.ask(text string) string

Назначение: отправляет сообщение в демо версию нейросети RuGTP-3 и возвращает её ответ.

Аргументы:

  1. text - запрос к нейросети на русском языке.

Возвращаемое значение: ответ нейросети в виде строки.

$answer = gpt3.ask("Есть ли жизнь на Марсе?") // В $answer будет ответ нейросети на заданный вопрос
  • Нет меток