沙箱 API
evaluate 指令会创建一个沙箱环境。这个沙箱环境支持 ES2020 的全部特性,外加 Bufferopen in new window。除此以外,还支持下面的属性和方法:
会话上下文
会话上下文中的属性和方法都是仅对当前会话生效的,类似于函数闭包。你可以尝试修改它们的值,但这将不造成任何影响。下次调用时你仍然可以访问这些值。
user
- 类型:
Partial<User>
调用者的用户数据。
channel
- 类型:
Partial<Channel>
当前频道的数据。
storage
- 类型:
object
可持续存储的数据。你能够使用的数据应该是可克隆的结构化数据open in new window,它可以包括:
- 你能在 JSON 中写的数据类型(如 string, number, Array 等)
- 可以克隆的标准类的实例(如 Set, Date, RegExp 等)
- 到其他此类数据的循环引用
它不应该包括:
- 函数和类
- 你定义的类的实例
- 全局对象
如果你非要尝试这样做,你会收到一个报错。
send(...param)
- param:
any[]
要发送的内容 - 返回值:
Promise<void>
向当前会话发送一条消息。
exec(message)
- message:
string
指令文本 - 返回值:
Promise<void>
在当前会话执行一条指令。
全局对象
全局对象是通过 Worker API 暴露出来的,它并不会随着会话而重新生成。部分全局对象的值可能被禁止修改。
utils
部分 koishi-utils 的功能将作为一个独立模块暴露在全局对象上,它包含了下列属性:
- segment
- Random
- Time
内置模块
koishi/utils
koishi/addons
多语言支持
下面是支持的文件后缀名。部分后缀名虽然有内置的支持,但需要你提前安装部分依赖。
- js/json: 原生支持
- yml/yaml: 原生支持
- coffee: 需要安装 coffeescript
- ts: 需要安装下面两组中的一组
- typescript + json5
- esbuild