ProjectWIND/core/events_handler.go

92 lines
2.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package core
import (
"ProjectWIND/LOG"
"ProjectWIND/wba"
"encoding/json"
"fmt"
"strings"
)
func HandleMessage(msgJson []byte) {
var msg wba.MessageEventInfo
err := json.Unmarshal(msgJson, &msg)
if err != nil {
LOG.Error("消息事件反序列化失败: %v", err)
}
// 处理消息
LOG.Info("收到消息:(来自:%v-%v:%v-%v)%v", msg.MessageType, msg.GroupId, msg.UserId, msg.Sender.Nickname, msg.RawMessage)
cmd, args := CmdSplit(msg)
for _, cmdList := range CmdMap {
_, ok := cmdList[cmd]
if ok {
LOG.Debug("执行命令:%v %v", cmd, args)
cmdList[cmd].Solve(args, msg)
break
}
}
// TODO: 处理消息内容
}
func HandleNotice(msgJson []byte) {
var notice wba.NoticeEventInfo
err := json.Unmarshal(msgJson, &notice)
if err != nil {
LOG.Error("通知事件反序列化失败: %v", err)
}
// TODO: 处理通知
}
func HandleRequest(msgJson []byte) {
var request wba.NoticeEventInfo
err := json.Unmarshal(msgJson, &request)
if err != nil {
LOG.Error("请求事件反序列化失败: %v", err)
}
// TODO: 处理请求
}
func HandleMetaEvent(msgJson []byte) {
var meta wba.NoticeEventInfo
err := json.Unmarshal(msgJson, &meta)
if err != nil {
LOG.Error("元事件反序列化失败: %v", err)
}
// TODO: 处理元事件
}
func CmdSplit(msg wba.MessageEventInfo) (string, []string) {
text := msg.RawMessage
if strings.HasPrefix(text, fmt.Sprintf("[CQ:at,qq=%d]", msg.SelfId)) {
text = strings.TrimPrefix(text, fmt.Sprintf("[CQ:at,qq=%d]", msg.SelfId))
} else {
if statusCheck(msg) {
return "", []string{}
}
}
//检查有无application.CmdMap中的命令前缀
for _, prefix := range cmdPrefix {
if strings.HasPrefix(text, prefix) {
text = strings.TrimPrefix(text, prefix)
for cmdList := range CmdMap {
for cmd := range CmdMap[cmdList] {
if strings.HasPrefix(text, cmd) {
text = strings.TrimPrefix(text, cmd)
text = strings.TrimPrefix(text, " ")
return cmd, strings.Split(text, " ")
}
}
}
}
}
return "", []string{}
}
func statusCheck(msg wba.MessageEventInfo) bool {
//TODO: 检查当前组群工作状态
return false
}
var cmdPrefix = []string{"/", "!", "", "", ".", "。"}