interface CQCode {
type: string
data: Record<string, string | number>
}
# 其他工具 (Utils)
包含了被 Koishi 使用的工具函数,它们由 koishi-utils
包提供。
注意
本页显示的版本号都表示对应的 koishi-utils 版本号(而不是对应的 koishi 版本号)。
# noop()
不进行任何操作(no operation)。
- 返回值:
void
# sleep(ms?)
等待一段时间。
- ms:
number
要等待的毫秒数 - 返回值:
Promise<void>
# isInteger(value)
判断传入的值是否为整数。
- value:
any
要判断的值 - 返回值:
boolean
是否为整数
# 观察者对象
# observe(target, update?, label?)
创建一个观察者对象。目前只支持从普通对象创建(不支持 Array / Set / Map)。
- target:
T extends object
要观测的对象 - update:
(diff: Partial<T>) => R
更新回调函数 - label:
string
对象的标签,用于标识 - 返回值:
Observed<T>
# observer._diff
观察者当前的对象变化。
# observer._merge(source)
将某些属性合并入当前观察者,不会触发 diff 更新。
- source:
object
要合并的对象 - 返回值:
this
# observer._update()
更新观察者对象,同时清除 diff。
- 返回值:
R
# CQCode 操作
CQCode 结构如下:
# CQCode.escape(source, insideCQ?)
转义一段文本到 CQ 码格式。
- source:
string
源文本 - insideCQ:
boolean
在 CQ 码内部转义(会额外处理逗号) - 返回值:
string
转义过后的文本
# CQCode.unescape(souce)
取消一段文本的 CQ 码转义。
- source:
string
源文本 - 返回值:
string
转义前的文本
# CQCode.stringify(type, data)
将一个对象转化成 CQ 码文本。
- type:
string
CQ 码类型 - data:
object
CQ 码参数 - 返回值:
string
生成的 CQ 码
注意
类型为 text 的 CQ 码将直接被转化为 data.text
输出。
# CQCode.stringifyAll(codes) 1.0.2+
将多个 CQCode 对象转化成文本并连接。
- codes:
CQCode[]
CQ 码数组 - 返回值:
string
生成的文本
# CQCode.parse(source)
将一个 CQ 码文本解析成对象。
- source:
string
CQ 码 - 返回值:
CQCode
CQ 码的类型和参数
# CQCode.parseAll(source) 1.0.2+
解析一段文本内的全部 CQ 码。其中的纯文本将会解析成 text 类型。
- source:
string
源文本 - 返回值:
CQCode[]
CQ 码数组
# 字符串操作
# simplify(source)
繁体转简体。
- source:
string
源文本 - 返回值:
string
简体文本
# traditionalize(source)
简体转繁体。
- source:
string
源文本 - 返回值:
string
繁体文本
# capitalize(source)
首字母大写。
- source:
string
源文本 - 返回值:
string
首字母大写后的文本
# camelCase(source)
如果输入的是字符串,则将字符串转换成 camelCase;如果是数组或对象,则递归地将对象中的每个(可枚举)的键转换成 camelCase;其他情况不受影响。
- source:
any
要转换的内容 - 返回值:
any
转换结果
# paramCase(source)
如果输入的是字符串,则将字符串转换成 param-case;如果是数组或对象,则递归地将对象中的每个(可枚举)的键转换成 param-case;其他情况不受影响。
- source:
any
要转换的内容 - 返回值:
any
转换结果
# snakeCase(source)
如果输入的是字符串,则将字符串转换成 snake_case;如果是数组或对象,则递归地将对象中的每个(可枚举)的键转换成 snake_case;其他情况不受影响。
- source:
any
要转换的内容 - 返回值:
any
转换结果
# 日期操作
# getDateNumber(date?)
获取当前日期(从 UNIX 时间开始时计算)。
- date:
Date
日期对象,默认为new Date()
- 返回值:
number
UNIX 时间开始后的天数
# fromDateNumber(value)
从 UNIX 时间开始后的天数计算日期对象。
- value:
number
UNIX 时间开始后的天数 - 返回值:
Date
日期对象
# 集合操作
# contain(array1, array2)
检测集合的包含关系。
- array1:
readonly any[]
数组 1 - array2:
readonly any[]
数组 2 - 返回值:
boolean
数组 1 是否包含数组 2 的全部元素
# intersection(array1, array2)
求两个集合的交集。
- array1:
readonly any[]
数组 1 - array2:
readonly any[]
数组 2 - 返回值:
any[]
两个数组的交集
# difference(array1, array2)
求两个集合的差集。
- array1:
readonly any[]
数组 1 - array2:
readonly any[]
数组 2 - 返回值:
any[]
两个数组的差集
# union(array1, array2)
求两个集合的并集。
- array1:
readonly any[]
数组 1 - array2:
readonly any[]
数组 2 - 返回值:
any[]
两个数组的并集
# 随机数操作
# randomBool(probability)
生成一个随机布尔值,有 probability 的概率为 1。
- probability:
number
概率 - 返回值:
boolean
随机布尔值
# randomId(length?)
生成一个随机 ID,由数字和大小写字母构成,长度为 length。
- length:
number
ID 长度,默认为 16 - 返回值:
string
生成的 ID
# randomReal(start?, end)
生成一个随机实数。
- start:
number
下界,默认为 0 - end:
end
上界 - 返回值:
number
一个 [start, end) 之间的随机实数
# randomInt(start?, end)
生成一个随机实数。
- start:
number
下界,默认为 0 - end:
end
上界 - 返回值:
number
一个 [start, end) 之间的随机整数
# randomPick(array)
从数组中随机挑出一个元素,不改变原数组。
- array:
readonly T[]
数组 - 返回值:
T
挑出的元素
# randomSplice(array)
从数组中随机删掉一个元素,返回删掉的元素。
- array:
T[]
数组 - 返回值:
T
挑出的元素
# randomMultiPick(array, count) beta
从数组中随机挑出一些元素,不改变原数组。
- array:
readonly T[]
数组 - count:
number
元素个数 - 返回值:
T[]
挑出的元素列表
# randomWeightedPick(weights, value?) beta
按照权重随机挑出一个元素。
- weights:
Record<T, number>
权重表 - value:
number
一个 0 到 1 之间的随机数,默认为Math.random()
- 返回值:
T
挑出的元素