Функции общего назначения
del(varName string)
Назначение: удаление локальной или модульной переменной.
Аргументы:
- varName - название переменной в виде строки. Может начинаться с префикса области видимости переменной. Если префикс опущен то считается, что переменная локальная.
Возвращаемое значение: отсутствует.
$localVar = 123
#moduleVar = true
del("$localVar") // Удаляет локальную переменную $localVar
del("localVar") // Тоже самое что и del("$localVar")
del("#moduleVar") // Удаляет переменную с областью видимости в пределах модуля
Функции для работы со строками
str.len(str string) int
Назначение: определение длины строки в символах.
Аргументы:
- str - строка длину которой необходимо определить.
Возвращаемое значение: целое число равное количеству символов в строке.
$str = "Какая-то строка" $len = str.len($str) // $len будет содержать 15
str.lower(str string) string
Назначение: преобразовапние символов строки в нижний регистр.
Аргументы:
- str - строка, которую необходимо преобразовать.
Возвращаемое значение: строка все символы которой находятся в нижнем регистре.
$str = "СтРоКа" $lower = str.lower($str) // $lower будет содержать "строка"
str.upper(str string) string
Назначение: преобразовапние символов строки в верхний регистр.
Аргументы:
- str - строка, которую необходимо преобразовать.
Возвращаемое значение: строка все символы которой находятся в верхнем регистре.
$str = "СтРоКа" $upper = str.upper($str) // $lower будет содержать "СТРОКА"
str.letter(str string, index int) string
Назначение: получение указанного символа строки.
Аргументы:
- str - строка, символ которой требуется получить.
- index - целое число определяющее позицию символа в строке начиная с 0. Если это число отрицательное то отсчёт начинается с конца строки.
Возвращаемое значение: строка соответствующая указанному символу, либо пустая строка если символа с такой позицией не существует.
$str = "Слово" $firstLetter = str.letter($str, 0) // Первая буква $lastLetter = str.letter($str, -1) // Последняя буква
str.concat(str1 string, str2 string) string
Назначение: объединяет две строки в одну.
Аргументы:
- str1 - строка которая объединяется.
- str2 - строка с которой объединяются.
Возвращаемое значение: новая строка состоящая из первой строки справа от которой добавлена вторая строка.
$str1 = "один" $str2 = "два" $str = str.concat($str1, $str2) // $str будет содержать "одиндва"
str.join(arr Collection, separator string = "") string
Назначение: объединяет элементы коллекции (кортежа, списка или ассоциативного массива) в строку.
Аргументы:
- arr - коллекция элементов для объединения.
- 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)
Назначение: сохраняет факт в базе фактов.
Аргументы:
- context - строка определяющая контекс в рамках которого существует факт.
- factName - строка определяющая название факта.
- factValue - любое значение определяющее содержимое факта.
- botId - идентификатор бота. По умолчанию не задан.
- 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
Назначение: извлекает факт из базы фактов.
Аргументы:
- context - строка определяющая контекс в рамках которого существует факт.
- factName - строка определяющая название факта.
- botId - идентификатор бота. По умолчанию не задан.
- clientId - идентификатор клиента, По умолчанию не задан.
Возвращаемое значение: содержимое факта.
fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Сохраняет факт с привязкой к боту и клиенту
$city = fact.load("место", "город", @botId, @clientId) // Загружаем факт в переменную. $city содержит "Екатеринбург"
fact.delete(context string, factName string, botId string = nil, clientId string = nil)
Назначение: удаляет факт из базы фактов.
Аргументы:
- context - строка определяющая контекс в рамках которого существует факт.
- factName - строка определяющая название факта.
- botId - идентификатор бота. По умолчанию не задан.
- 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). Может быть задан при сохранении факта с целью привязки факта к клиенту. Может участвовать в поиске.