type PluginFunction <T extends Context, U> = (ctx: T, options: U) => void
type PluginObject <T extends Context, U> = { apply: PluginFunction<T, U> }
type Plugin <T extends Context, U> = PluginFunction<T, U> | PluginObject<T, U>
# 上下文 (Context)
上下文 (Context) 是 Koishi 的重要概念。你的每一个插件,中间件,监听器和指令都被绑定在上下文上。
# ctx.database
当前 App 的数据库对象。参见 数据库。
# ctx.sender
当前 App 的发送器对象。参见 发送器。
# ctx.receiver
当前上下文的接收器对象。参见 接收器。
# ctx.plus(context)
在已有上下文的基础上加上其他上下文。
- context:
Context
要加上的上下文 - 返回值:
Context
新的上下文
# ctx.minus(context)
在已有上下文的基础上除去其他上下文。
- context:
Context
要除去的上下文 - 返回值:
Context
新的上下文
# ctx.intersect(context)
给出当前上下文和其他上下文的交集
- context:
Context
要求交集的上下文 - 返回值:
Context
新的上下文
# ctx.inverse()
求出当前上下文的补集。
- 返回值:
Context
新的上下文
# ctx.match(meta)
测试上下文能否匹配元信息对象。
- meta:
Meta
元信息对象 - 返回值:
boolean
匹配结果
# ctx.contain(context)
判断当前上下文是否完全包含了另一个上下文。
- context:
Context
要比较的上下文 - 返回值:
boolean
比较结果
# ctx.plugin(plugin, options?)
当前上下文中安装一个插件。
- plugin:
Plugin<T, U>
要安装的插件 - options:
U
要传入插件的参数,如果为false
则插件不会被安装 - 返回值:
this
# ctx.middleware(middleware)
当前上下文中注册一个中间件。
- middleware:
Middleware
要注册的中间件 - 返回值:
this
# ctx.prependMiddleware(middleware)
当前上下文中注册一个前置中间件。
- middleware:
Middleware
要注册的前置中间件 - 返回值:
this
# ctx.removeMiddleware(middleware)
移除当前上下文中一个已注册的中间件。
- middleware:
Middleware
要移除的中间件 - 返回值:
boolean
是否存在该中间件
# ctx.command(rawName, description?, config?)
在当前上下文中注册或修改一个指令。
- rawName:
string
指令名以及可能的参数 - description?:
string
指令的描述 - config?:
CommandConfig
指令的配置 - 返回值:
Command
注册或修改的指令
# ctx.getCommand(name, meta?)
在当前上下文中获取一个指令。如果提供了 meta
,将会检测指令是否可以匹配 meta.$path
;否则将使用 this.path
进行匹配。
# ctx.runCommand(name, meta, args?, options?, rest?)
在当前上下文中执行一个指令。
- name:
string
指令名 - meta:
Meta
元信息对象 - args:
string[]
参数列表 - options:
Record<string, any>
选项列表 - rest:
string
剩余参数,参见 剩余参数 - 返回值:
Promise<void>
# ctx.logger(scope?) 1.3.0+
根据 scope 生成一个 Logger 对象。
- scope:
string
要指定的类型,默认为''
- 返回值:
Logger
# ctx.end()
返回当前上下文所在的 App 实例,可用于链式调用。
- 返回值:
App
当前上下文所在的 App 实例