Skip to content

事件系统 (Events)

TIP

本节介绍事件 API。如果想了解 Koishi 的内置事件,请前往 API > 核心模块 > 事件

实例方法

ctx.emit(session?, event, ...param)

ctx.parallel(session?, event, ...param)

  • session: Session 会话对象
  • event: string 事件名称
  • param: any[] 事件的参数
  • 返回值: boolean 匹配结果

同时触发所有 event 事件的能够匹配 session 对象的回调函数。emit 为同步,parallel 为异步。

ctx.bail(session?, event, ...param)

ctx.serial(session?, event, ...param)

  • session: Session 会话对象
  • event: string 事件名称
  • param: any[] 事件的参数
  • 返回值: boolean 匹配结果

依次触发所有 event 事件的能够匹配 session 对象的回调函数。当返回一个 false, null, undefined 以外的值时将这个值作为结果返回。bail 为同步,serial 为异步。

ctx.on(event, listener, prepend?)

  • event: string 事件名称
  • listener: Function 回调函数
  • prepend: boolean 是否前置
  • 返回值: () => boolean 取消这个监听器

监听一个事件。

ctx.off(event, listener)

  • event: string 事件名称
  • listener: Function 回调函数
  • 返回值: boolean 是否有此回调函数

取消监听一个事件。

ctx.once(event, listener, prepend?)

  • event: string 事件名称
  • listener: Function 回调函数
  • prepend: boolean 是否前置
  • 返回值: () => boolean 取消这个监听器

监听一个事件,且确保回调函数只会被执行一次。

ctx.before(event, listener, append?)

  • event: string 事件名称
  • listener: Function 回调函数
  • append: boolean 是否后置
  • 返回值: () => boolean 取消这个监听器

监听一个以 before- 开头的事件。

ctx.middleware(middleware, prepend?)

  • middleware: Middleware 要注册的中间件
  • prepend: boolean 是否前置
  • 返回值: () => boolean 取消这个中间件

当前上下文中注册一个中间件。