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

del(varName string)

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

Аргументы:

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

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

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

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

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.letter(str string, index int) string

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

Аргументы:

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

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

$str = "Слово"
$firstLetter = str.letter($str, 0)  // Первая буква
$lastLetter = str.letter($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 будет содержать ""

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

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

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