Назначение: удаление локальной или модульной переменной.
Аргументы:
Возвращаемое значение: отсутствует.
$localVar = 123
#moduleVar = true
del("$localVar") // Удаляет локальную переменную $localVar
del("localVar") // Тоже самое что и del("$localVar")
del("#moduleVar") // Удаляет переменную с областью видимости в пределах модуля |
Назначение: определение длины строки в символах.
Аргументы:
Возвращаемое значение: целое число равное количеству символов в строке.
$str = "Какая-то строка" $len = str.len($str) // $len будет содержать 15 |
Назначение: преобразовапние символов строки в нижний регистр.
Аргументы:
Возвращаемое значение: строка все символы которой находятся в нижнем регистре.
$str = "СтРоКа" $lower = str.lower($str) // $lower будет содержать "строка" |
Назначение: преобразование символов строки в верхний регистр.
Аргументы:
Возвращаемое значение: строка все символы которой находятся в верхнем регистре.
$str = "СтРоКа" $upper = str.upper($str) // $lower будет содержать "СТРОКА" |
Назначение: преобразование первого символа строки в верхний регистр.
Аргументы:
Возвращаемое значение: строка в которой первый символ записан в верхнем регистре.
$str = str.ucfirst("строка") // $str будет содержать "Строка" |
Назначение: преобразование первого символа строки в нижний регистр.
Аргументы:
Возвращаемое значение: строка в которой первый символ записан в нижнем регистре.
$str = str.ucfirst("Строка") // $str будет содержать "строка" |
Назначение: получение указанного символа строки.
Аргументы:
Возвращаемое значение: строка соответствующая указанному символу, либо пустая строка если символа с такой позицией не существует.
$str = "Слово" $firstLetter = str.letter($str, 0) // Первая буква $lastLetter = str.letter($str, -1) // Последняя буква |
Назначение: получение указанного символа строки начиная с начала строки.
Аргументы:
Возвращаемое значение: строка соответствующая указанному символу, либо пустая строка если символа с такой позицией не существует.
$str = "Слово" $firstLetter = str.first($str) // Первая буква $secondLetter = str.first($str, 1) // Вторая буква |
Назначение: получение указанного символа строки начиная с конца строки.
Аргументы:
Возвращаемое значение: строка соответствующая указанному символу, либо пустая строка если символа с такой позицией не существует.
$str = "Слово" $lastLetter = str.last($str) // Последняя буква $penultLetter = str.last($str, 1) // Предпоследняя буква |
Назначение: объединяет две строки в одну.
Аргументы:
Возвращаемое значение: новая строка состоящая из первой строки справа от которой добавлена вторая строка.
$str1 = "один" $str2 = "два" $str = str.concat($str1, $str2) // $str будет содержать "одиндва" |
Назначение: объединяет элементы коллекции (кортежа, списка или ассоциативного массива) в строку.
Аргументы:
Возвращаемое значение: новая строка составленная из всех элементов коллекции отделённых между собой разделителем.
$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 будет содержать "" |
Назначение: разбивает строку на части использую separator в качестве разделителя.
Аргументы:
Возвращаемое значение: список подстрок на которые была разбита строка.
$letters = str.split("абвгде") // Получили список букв слова
$words = str.split("один два три", " ") // Получили список слов
$words = str.split("один два три", " ", 1) // words содержит ["один", "два три"] |
Назначение: складывает две даты, заданные в виде строки либо как число секунд.
Аргументы:
Возвращаемое значение: возвращает новую дату и время в виде строки.
$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" |
Назначение: вычисляет разность двух дат, заданных в виде строк либо количеством секунд.
Аргументы:
Возвращаемое значение: возвращает новую дату и время в виде строки либо число секунд - разность дат.
$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 |
Назначение: возвращает ближайшую к текущей дату по заданному дню.
Аргументы:
Возвращаемое значение: возвращает ближайшую к day дату.
// Допустим сейчас 2022-12-20 $d = date.nearest(25) // $d содержит 2022-12-25 $d = date.nearest(10) // $d содержит 2023-01-10 |
Назначение: возвращает дату соответствующую указанному дню в следующем месяце.
Аргументы:
Возвращаемое значение: дата в будущем.
// Допустим сейчас 2022-12-20 $d = date.future(25) // $d содержит 2023-01-25 $d = date.future(10) // $d содержит 2023-01-10 |
Назначение: возвращает дату соответствующую указанному дню в прошлом месяце.
Аргументы:
Возвращаемое значение: дата в прошлом.
// Допустим сейчас 2022-12-20 $d = date.past(25) // $d содержит 2022-11-25 $d = date.past(10) // $d содержит 2022-11-10 |
Назначение: возвращает ближайшее к текущему время по заданному количеству минут.
Аргументы:
Возвращаемое значение: возвращает ближайшее к minute время.
// Допустим сейчас 23:30:00 $t = time.nearest(45) // $t содержит 23:45:00 $t = time.nearest(15) // $t содержит 00:15:00 |
Назначение: возвращает время соответствующее указанному числу минут в следующем часе.
Аргументы:
Возвращаемое значение: время в будущем.
// Допустим сейчас 23:30:00 $t = time.future(45) // $t содержит 00:45:00 $t = time.future(15) // $t содержит 00:15:00 |
Назначение: возвращает время соответствующее указанному числу минут в прошедшем часе.
Аргументы:
Возвращаемое значение: время в прошлом.
// Допустим сейчас 23:30:00 $t = time.past(45) // $t содержит 22:45:00 $t = time.past(15) // $t содержит 22:15:00 |
Назначение: сохраняет факт в базе фактов.
Аргументы:
Возвращаемое значение: отсутствует.
fact.save("место", "город", "Екатеринбург") // Факт доступный всем ботам компании
fact.save("место", "город", "Екатеринбург", nil, @clientId) // Факт с привязкой к клиенту
fact.save("место", "город", "Екатеринбург", @botId) // Факт с привязкой к боту
fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Факт с привязкой к боту и клиенту |
Назначение: извлекает факт из базы фактов.
Аргументы:
Возвращаемое значение: содержимое факта.
fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Сохраняет факт с привязкой к боту и клиенту
$city = fact.load("место", "город", @botId, @clientId) // Загружаем факт в переменную. $city содержит "Екатеринбург" |
Назначение: удаляет факт из базы фактов.
Аргументы:
Возвращаемое значение: отсутствует.
fact.save("место", "город", "Екатеринбург", @botId, @clientId) // Сохраняет факт с привязкой к боту и клиенту
$city = fact.load("место", "город", @botId, @clientId) // Загружаем факт в переменную. $city содержит "Екатеринбург"
fact.delete("место", "город", @botId, @clientId) // Удаляем факт.
$city = fact.load("место", "город", @botId, @clientId) // Пытаемся загрузить удалённый факт. Теперь $city содержит nil. |
Назначение: возвращает экземпляр FactQuery для построения и выполнения запросов к базе фактов.
Аргументы: отсутствуют.
Возвращаемое значение: объект FactQuery.
// Добавили пару фактов в базу
fact.save("место", "страна", "Россия")
fact.save("место", "город", "Екатеринбург")
// Загрузили в $places список мест отсортированных по имени факта в порядке убывания:
// [{"name": "город", "value": "Россия"}, {"name": "страна", "value": "Екатеринбург"}]
$places = fact.query().
select("name,value").
where("context", "=", "место").
sortBy("-name").
rows() |
Назначение: возвращает экземпляр 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() |
Используя методы этого объекты вы можете выполнять и строить разнообразные запросы к базе фактов. База фактов представляет собой список записей. Каждая запись представляет собой единичный факт состоящий из следующих частей (полей):
Назначение: задаёт список полей из базы фактов значения которых следует вернуть в результате запроса. Если метод select не вызыался, то будут возвращены поля context,name и value.
Аргументы:
Возвращаемое значение: тот же объект FactQuery.
$facts = fact.query().rows() // select не вызван возвращаем все поля.
$facts = fact.query().select(["value", "context"]).rows() // Возвращаем список фактов для которых нам нужны только value и context.
$facts = fact.query().select("botId").rows() // Возвращаем только поле botId к которым привязаны факты. |
Назначение: задаёт условие поиска фактов. Несколько методов where объединяются по принципу логического "И", т.е. все условия должны быть выполнены. Метод where равносилен методу andWhere(field, operator, value).
Аргументы:
Возвращаемое значение: тот же объект FactQuery.
Список доступных операций:
// Ищем факты у которых context содержит подстроку test
$facts = fact.query().
select("name,value").
where("context", "~", "^.*test.*$").
rows() |
Эквивалентен where(field, operator, value).
Аналогичен where, с той лишь разницей, что несколько вызовов этого метода объединяются по принципу логического "ИЛИ", т.е. должно выполняться хотя бы одно условие.
Назначение: задаёт сложное (вложенное) условие. Несколько вызвов метода объединяются по принципу логического "И". Эквивалентен методу andWhere(cond).
Аргументы:
Возвращаемое значение: тот же объект FactQuery.
// Ищем факты у которых context содержит подстроку test и при этом name равен "слово" или name начинается на "оп".
$facts = fact.query().
select("name,value").
where("context", "~", "^.*test.*$").
andWhere(fact.cond().
where("name", "=", "слово").
orWhere("name", "^@", "оп")).
rows() |
Эквивалентен where(cond)
Аналогичен where(cond), с той лишь разницей, что несколько вызовов этого метода объединяются по принципу логического "ИЛИ", т.е. должно выполняться хотя бы одно условие.
Назначение: задаёт сортирову фактов по указанным полям.
Аргументы:
Возвращаемое значение: тот же объект FactQuery.
// Получаем все факты для бота с двойной сортировкой:
// сначала по контексту по возрастанию (т.е. в алфавитном порядке)
// и далее по имени факта по убыванию.
$facts = fact.query().
select("name,value").
where("botId", "=", @botId)
sortBy("+context,-name"). // можно также использовать коллеции. Например, sortBy(["+context", "-name"])
rows() |
Назначение: ставит ограничение на максимальное количество извлекаемых фактов.
Аргументы:
Возвращаемое значение: тот же объект FactQuery.
// Получаем первые 10 фактов
$facts = fact.query().
select("name,value").
sortBy("name").
limit(10).
rows() |
Назначение: задаёт количество фактов которые следует пропустить при поиске.
Аргументы:
Возвращаемое значение: тот же объект FactQuery.
// Пропускаем 5 первых фактов и извлекаем следующие 10
$facts = fact.query().
select("name,value").
sortBy("name").
skip(5).
limit(10).
rows() |
Назначение: возвращает первое указанное через select поле первого найденного факта.
Аргументы: отсутствуют.
Возвращаемое значение: значение поля.
// Извлекает имя первого найденного факта
$firstFactName = fact.query().
select("name,value"). // value хоть и указано, но будет проигнорировано
one() |
Назначение: возвращает список состоящий из всех значений первого выбранного поля найденных фактов.
Аргументы: отсутствуют.
Возвращаемое значение: список значений поля.
// Извлекает список имён всех найденных фактов
$names = fact.query().
select("name,value"). // value хоть и указано, но будет проигнорировано
column() |
Назначение: возвращает все выбранные поля в виде ассоциативного массива для первого найденного факта.
Аргументы: отсутствуют.
Возвращаемое значение: значения всех полей первого факта.
// Извлекает имя и значение первого найденного факта
$names = fact.query().
select("name,value").
row() |
Назначение: возвращает список всех найденных фактов. Каждый факт возвращается как ассоциативный массив ключами которого являются поля факта, а значениями - значения полей.
Аргументы: отсутствуют.
Возвращаемое значение: значения всех полей всех фактов.
// Извлекает имя и значение всех фактов
$names = fact.query().
select("name,value").
rows() |
Используйте методы этого объекта чтобы строить сложные вложенные условия к базе фактам.
Аналогичен методу where(field string, operator string, value mixed) объекта FactQuery.
Аналогичен методу andWhere(field string, operator string, value mixed) объекта FactQuery.
Аналогичен методу orWhere(field string, operator string, value mixed) объекта FactQuery.
Аналогичен методу andWhere(field string, operator string, value mixed) объекта FactQuery.
Аналогичен методу orWhere(field string, operator string, value mixed) объекта FactQuery.
Аналогичен методу where(cond FactQueryCondition) объекта FactQuery.
Аналогичен методу andWhere(cond FactQueryCondition) объекта FactQuery.
Аналогичен методу orWhere(cond FactQueryCondition) объекта FactQuery.
Аналогичен методу andWhere(cond FactQueryCondition) объекта FactQuery.
Аналогичен методу orWhere(cond FactQueryCondition) объекта FactQuery.
Назначение: определение размера очереди сообщений пользователя.
Аргументы: отсутствуют.
Возвращаемое значение: число сообщений пользователя.
$messageCount = queue.size() // $messageCount содержит число сообщений пользователя за всё время диалога |
Назначение: возвращает последнее сообщение пользователя либо nil, если очередь сообщений пуста.
Аргументы: отсутствуют.
Возвращаемое значение: объект UserMessage или nil.
$lastMessage = queue.last() // $lastMessage содержит последнее на данный момент сообщение пользователя |
Назначение: возвращает первое сообщение пользователя либо nil, если очередь сообщений пуста.
Аргументы: отсутствуют.
Возвращаемое значение: объект UserMessage или nil.
$firstMessage = queue.first() // $firstMessage содержит первое сообщение пользователя |
Назначение: возвращает сообщение пользователя по его порядковому номеру, начиная с 1.
Аргументы:
Возвращаемое значение: объект UserMessage или nil.
$message = queue.nth(1) // $message содержит первое сообщение пользователя $message = queue.nth(5) // $message содержит пятое сообщение пользователя |
Назначение: возвращает сообщение пользователя по его порядковому номеру считая с конца очереди. Последнее сообщение соответствует порядковому номеру 1.
Аргументы:
Возвращаемое значение: объект UserMessage или nil.
$message = queue.lastNth(1) // $message содержит последнее сообщение пользователя $message = queue.lastNth(5) // $message содержит пятое с конца очереди сообщение пользователя |
Методы этого объекта позволяют получить информацию о конкретном сообщении пользователя.
Назначение: определяет пустое ли сообщение.
Аргументы: отсутствуют.
Возвращаемое значение: true, если сообщение пустое и false в противном случае.
$isEmpty = queue.last().isEmpty() // $isEmpty содержит true, если последнее сообщение пользователя пустое и false в противном случае |
Назначение: определяет есть ли вложения в данном сообщении.
Аргументы: отсутствуют.
Возвращаемое значение: true, если сообщение имеет вложения и false в противном случае.
$hasAttachments = queue.first().hasAttachments() // $hasAttachments содержит true, если первое сообщение пользователя имеет вложения и false в противном случае |