go-wxhelper/initialization/plugin.go

62 lines
1.8 KiB
Go
Raw Normal View History

2023-12-11 10:44:23 +08:00
package initialization
import (
"go-wechat/common/current"
2024-07-05 09:32:39 +08:00
"go-wechat/model/dto"
2023-12-11 10:44:23 +08:00
plugin "go-wechat/plugin"
"go-wechat/plugin/plugins"
"go-wechat/service"
"go-wechat/types"
2023-12-11 10:44:23 +08:00
)
// Plugin
// @description: 初始化插件
func Plugin() {
// 定义一个处理器
dispatcher := plugin.NewMessageMatchDispatcher()
// 设置为异步处理
dispatcher.SetAsync(true)
// 注册插件
// 保存消息进数据库
2024-07-05 09:32:39 +08:00
dispatcher.RegisterHandler(func(*dto.Message) bool {
2023-12-11 10:44:23 +08:00
return true
}, plugins.SaveToDb)
// 通知邀请入群消息到配置用户
dispatcher.RegisterHandler(func(m *dto.Message) bool {
flag, _ := m.IsInvitationJoinGroup()
return flag && !m.IsGroup()
}, plugins.NotifyInvitationJoinGroup)
// 被移除群聊通知到配置用户
dispatcher.RegisterHandler(func(m *dto.Message) bool {
return m.Type == types.MsgTypeSys
}, plugins.NotifyRemoveFromChatroom)
// 响应好友添加成功消息
dispatcher.RegisterHandler(func(m *dto.Message) bool {
2024-08-19 11:44:59 +08:00
return m.IsNewFriendAdd() || m.IsJoinToGroup() || m.IsOldFriendBack()
}, plugins.ReplyNewFriend)
// 私聊指令消息
2024-07-05 09:32:39 +08:00
dispatcher.RegisterHandler(func(m *dto.Message) bool {
// 私聊消息 或 群聊艾特机器人并且以/开头的消息
2024-01-12 21:50:56 +08:00
isGroupAt := m.IsAt() && !m.IsAtAll()
return (m.IsPrivateText() || isGroupAt) && m.CleanContentStartWith("/") && service.CheckIsEnableCommand(m.FromUser)
}, plugins.Command)
2023-12-11 10:44:23 +08:00
// AI消息插件
2024-07-05 09:32:39 +08:00
dispatcher.RegisterHandler(func(m *dto.Message) bool {
2023-12-11 10:44:23 +08:00
// 群内@或者私聊文字消息
2024-01-12 21:50:56 +08:00
return (m.IsAt() && !m.IsAtAll()) || m.IsPrivateText()
2023-12-11 10:44:23 +08:00
}, plugins.AI)
// 欢迎新成员
2024-07-05 09:32:39 +08:00
dispatcher.RegisterHandler(func(m *dto.Message) bool {
2023-12-11 10:44:23 +08:00
return m.IsNewUserJoin()
}, plugins.WelcomeNew)
// 注册消息处理器
current.SetRobotMessageHandler(plugin.DispatchMessage(dispatcher))
}