forked from rainerosion/wechatbot
53 lines
1.2 KiB
Go
53 lines
1.2 KiB
Go
package handlers
|
||
|
||
import (
|
||
"log"
|
||
|
||
"github.com/bujnlc8/wechatbot/config"
|
||
"github.com/eatmoreapple/openwechat"
|
||
)
|
||
|
||
// MessageHandlerInterface 消息处理接口
|
||
type MessageHandlerInterface interface {
|
||
handle(*openwechat.Message) error
|
||
ReplyText(*openwechat.Message) error
|
||
}
|
||
|
||
type HandlerType string
|
||
|
||
const (
|
||
GroupHandler = "group"
|
||
UserHandler = "user"
|
||
)
|
||
|
||
// handlers 所有消息类型类型的处理器
|
||
var handlers map[HandlerType]MessageHandlerInterface
|
||
|
||
func init() {
|
||
handlers = make(map[HandlerType]MessageHandlerInterface)
|
||
handlers[GroupHandler] = NewGroupMessageHandler()
|
||
handlers[UserHandler] = NewUserMessageHandler()
|
||
}
|
||
|
||
// Handler 全局处理入口
|
||
func Handler(msg *openwechat.Message) {
|
||
log.Printf("hadler Received msg : %v", msg.Content)
|
||
// 处理群消息
|
||
if msg.IsSendByGroup() {
|
||
handlers[GroupHandler].handle(msg)
|
||
return
|
||
}
|
||
// 好友申请
|
||
if msg.IsFriendAdd() {
|
||
if config.LoadConfig().AutoPass {
|
||
_, err := msg.Agree("你好我是基于chatGPT引擎开发的微信机器人,你可以向我提问任何问题。")
|
||
if err != nil {
|
||
log.Fatalf("add friend agree error : %v", err)
|
||
return
|
||
}
|
||
}
|
||
}
|
||
// 私聊
|
||
handlers[UserHandler].handle(msg)
|
||
}
|