事件系统

GoroBot 通过事件系统实现了消息监听等功能。这一设计允许插件开发者和用户编写简洁、通用的代码来扩展和实现各种功能。

以消息事件举例

以下示例代码展示了如何使用事件系统注册和注销一个监听器:

import botc "github.com/Jel1ySpot/GoroBot/pkg/core/bot_context"

var del func()
del, _ = grb.On(GoroBot.MessageEvent(func(ctx botc.MessageContext) error {
	if ctx.String() == "ping" {
		_ = ctx.ReplyText("🏓")
		del()
	}
	return nil
}))

在这段代码中,通过调用 grb.On 方法,注册了一个监听消息事件的监听器。监听器的回调函数接收一个 ctx(消息内容上下文)参数。当接收到的消息内容为 "ping" 时,调用 ctx.ReplyText 方法回复 "🏓",并通过 del 函数注销该监听器,从而实现了单次响应特定消息的功能。

MessageEvent() 函数接受一个回调函数作为参数,并返回一个 Name 属性为 "message"EventHandler 实例。框架通过将用户提供的回调函数转换为 func(args ...any) error 的通用签名形式,简化了事件注册的流程。这种设计使开发者无需关心底层实现的细节,便可直观地使用框架或插件提供的事件注册器。