2024-12-05 01:00:07 +08:00
|
|
|
|
package core
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"ProjectWIND/LOG"
|
2024-12-07 17:16:44 +08:00
|
|
|
|
"ProjectWIND/wba"
|
2024-12-05 01:00:07 +08:00
|
|
|
|
"encoding/json"
|
|
|
|
|
"fmt"
|
|
|
|
|
"strings"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func HandleMessage(msgJson []byte) {
|
2024-12-07 17:16:44 +08:00
|
|
|
|
var msg wba.MessageEventInfo
|
2024-12-05 01:00:07 +08:00
|
|
|
|
err := json.Unmarshal(msgJson, &msg)
|
|
|
|
|
if err != nil {
|
|
|
|
|
LOG.ERROR("Unmarshalling message: %v", err)
|
|
|
|
|
}
|
|
|
|
|
// 处理消息
|
|
|
|
|
LOG.INFO("收到消息:(来自:%v-%v:%v-%v)%v", msg.MessageType, msg.GroupId, msg.UserId, msg.Sender.Nickname, msg.RawMessage)
|
|
|
|
|
//如果消息文本内容为bot,发送框架信息。
|
|
|
|
|
cmd, args := CmdSplit(msg)
|
2024-12-07 17:16:44 +08:00
|
|
|
|
_, ok := CmdMap[cmd]
|
2024-12-05 01:00:07 +08:00
|
|
|
|
if ok {
|
2024-12-07 17:16:44 +08:00
|
|
|
|
LOG.DEBUG("执行命令:%v %v", cmd, args)
|
|
|
|
|
CmdMap[cmd].SOLVE(args, msg)
|
2024-12-05 01:00:07 +08:00
|
|
|
|
}
|
|
|
|
|
// TODO: 处理消息内容
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func HandleNotice(msgJson []byte) {
|
2024-12-07 17:16:44 +08:00
|
|
|
|
var notice wba.NoticeEventInfo
|
2024-12-05 01:00:07 +08:00
|
|
|
|
err := json.Unmarshal(msgJson, ¬ice)
|
|
|
|
|
if err != nil {
|
|
|
|
|
LOG.ERROR("Unmarshalling notice: %v", err)
|
|
|
|
|
}
|
|
|
|
|
// TODO: 处理通知
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func HandleRequest(msgJson []byte) {
|
2024-12-07 17:16:44 +08:00
|
|
|
|
var request wba.NoticeEventInfo
|
2024-12-05 01:00:07 +08:00
|
|
|
|
err := json.Unmarshal(msgJson, &request)
|
|
|
|
|
if err != nil {
|
|
|
|
|
LOG.ERROR("Unmarshalling request: %v", err)
|
|
|
|
|
}
|
|
|
|
|
// TODO: 处理请求
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func HandleMetaEvent(msgJson []byte) {
|
2024-12-07 17:16:44 +08:00
|
|
|
|
var meta wba.NoticeEventInfo
|
2024-12-05 01:00:07 +08:00
|
|
|
|
err := json.Unmarshal(msgJson, &meta)
|
|
|
|
|
if err != nil {
|
|
|
|
|
LOG.ERROR("Unmarshalling meta: %v", err)
|
|
|
|
|
}
|
|
|
|
|
// TODO: 处理元事件
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-07 17:16:44 +08:00
|
|
|
|
func CmdSplit(msg wba.MessageEventInfo) (string, []string) {
|
2024-12-05 01:00:07 +08:00
|
|
|
|
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.CmdList中的命令前缀
|
|
|
|
|
for _, prefix := range cmdPrefix {
|
|
|
|
|
if strings.HasPrefix(text, prefix) {
|
|
|
|
|
text = strings.TrimPrefix(text, prefix)
|
2024-12-07 17:16:44 +08:00
|
|
|
|
for cmd := range CmdMap {
|
2024-12-05 01:00:07 +08:00
|
|
|
|
if strings.HasPrefix(text, cmd) {
|
|
|
|
|
text = strings.TrimPrefix(text, cmd)
|
2024-12-07 17:16:44 +08:00
|
|
|
|
text = strings.TrimPrefix(text, " ")
|
2024-12-05 01:00:07 +08:00
|
|
|
|
return cmd, strings.Split(text, " ")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return "", []string{}
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-07 17:16:44 +08:00
|
|
|
|
func statusCheck(msg wba.MessageEventInfo) bool {
|
2024-12-05 01:00:07 +08:00
|
|
|
|
//TODO: 检查当前组群工作状态
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var cmdPrefix = []string{"/", "!", "/", "!", ".", "。"}
|