中间件

中间件使用 grb.Middleware(MiddlewareCallback) 注册。跟事件一样,这个方法返回一个函数用于注销该中间件。

MiddlewareCallback 的签名为:

func(msg botc.MessageContext, next func(...MiddlewareCallback) error) error

跟消息事件不同的是,中间件的回调函数参数中有一个额外的参数 next,只有调用了它才会进入接下来的流程。

使用中间件实现的 ping

grb.Middleware(func(msg botc.MessageContext, next func(...GoroBot.MiddlewareCallback) error) error {
	if msg.String() == "ping" {
		_, _ = msg.ReplyText("🏓")
	}
	return next()
})

prepare 模式

传入第二个参数 true 可以注册一个 prepare 中间件,它会在所有普通中间件之前执行:

grb.Middleware(func(msg botc.MessageContext, next func(...GoroBot.MiddlewareCallback) error) error {
	// 这段逻辑会在所有普通中间件之前执行
	return next()
}, true)