事件系统 (Events)
TIP
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
取消这个中间件
当前上下文中注册一个中间件。