上下文 (Context)
上下文 (Context) 是 Koishi 的核心概念。Koishi 的绝大多数功能也直接通过上下文提供,包括插件、中间件、监听器和指令等。
服务与混入
Koishi 使用了组合 (Compose) 的开发方式,绝大部分上下文属性和方法都通过混入的方式搭载在了服务上。以下的属性和方法是由内置服务提供的,你可以像使用实例属性和方法一样使用它们。这些 API 的具体用法在服务文档中详细介绍,你可以点击对应的链接前往查看。
- ctx.any
- ctx.bail
- ctx.before
- ctx.database
- ctx.emit
- ctx.exclude
- ctx.filter
- ctx.http
- ctx.i18n
- ctx.intersect
- ctx.loader
- ctx.middleware
- ctx.model
- ctx.never
- ctx.off
- ctx.on
- ctx.once
- ctx.parallel
- ctx.permissions
- ctx.plugin
- ctx.router
- ctx.scope
- ctx.serial
- ctx.start
- ctx.stop
- ctx.union
- ctx.using
实例属性
ctx.root.config
- 类型:
Context.Config
当前的 Koishi 全局配置,相当于配置文件中的配置经过默认值处理后的结果。
ctx.baseDir
- 类型:
string
当前的 Koishi 默认路径。如果你使用配置文件,则这个路径是配置文件所在的路径;否则这个路径是当前工作路径。
ctx.bots
- 类型:
Bot[]
当前应用的全部机器人实例。
实例方法
ctx.extend(meta)
- meta:
Partial<Context.Meta>
要覆盖的属性 - 返回值:
this
新的上下文
以当前上下文为原型创建一个新上下文。meta
中的属性将覆盖当前上下文的属性。
ctx.command(def, desc?, config?)
- def:
string
指令名以及可能的参数 - desc:
string
指令的描述 - config:
CommandConfig
指令的配置- checkUnknown:
boolean
是否对未知选项进行检测,默认为false
- checkArgCount:
boolean
是否对参数个数进行检测,默认为false
- authority:
number
最低调用权限,默认为1
- showWarning:
boolean
当小于最短间隔时是否进行提醒,默认为true
- checkUnknown:
- 返回值:
Command
注册或修改的指令
在当前上下文中注册或修改一个指令。
ctx.broadcast(channels?, content, forced?) 需要数据库
- channels:
string[]
频道列表 - content:
string
要发送的内容 - forced:
boolean
是否无视 silent 标记 - 返回值:
Promise<string[]>
成功发送的消息 ID 列表
所有机器人向自己分配的频道广播消息,存在标记 silent 的频道除外。如有失败不会抛出错误。
ctx.logger(scope?)
- scope:
string
要指定的类型,默认为''
- 返回值:
Logger
根据命名空间生成一个 Logger 对象。
静态属性和方法
Context.filter
- 类型:
symbol
Context.source
- 类型:
symbol
Context.current
- 类型:
symbol
特殊的键值,可以在通用上下文属性对象的方法上访问。参见 声明通用上下文属性。