Skip to content

Context

上下文 (Context) 是 Koishi 的核心概念。Koishi 的绝大多数功能也直接通过上下文提供,包括插件、中间件、监听器和指令等。

服务与混入

Koishi 使用了组合 (Compose) 的开发方式,绝大部分上下文属性和方法都通过混入的方式搭载在了服务上。以下的属性和方法是由内置服务提供的,你可以像使用实例属性和方法一样使用它们。这些 API 的具体用法在服务文档中详细介绍,你可以点击对应的链接前往查看。

Instance Properties

ctx.root.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
  • 返回值: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

特殊的键值,可以在通用上下文属性对象的方法上访问。参见 声明通用上下文属性