ProjectWIND/core/events_handler.go
2024-12-12 15:11:50 +08:00

87 lines
2.1 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("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)
_, ok := CmdMap[cmd]
if ok {
LOG.DEBUG("执行命令:%v %v", cmd, args)
CmdMap[cmd].SOLVE(args, msg)
}
// TODO: 处理消息内容
}
func HandleNotice(msgJson []byte) {
var notice wba.NoticeEventInfo
err := json.Unmarshal(msgJson, &notice)
if err != nil {
LOG.ERROR("Unmarshalling notice: %v", err)
}
// TODO: 处理通知
}
func HandleRequest(msgJson []byte) {
var request wba.NoticeEventInfo
err := json.Unmarshal(msgJson, &request)
if err != nil {
LOG.ERROR("Unmarshalling request: %v", err)
}
// TODO: 处理请求
}
func HandleMetaEvent(msgJson []byte) {
var meta wba.NoticeEventInfo
err := json.Unmarshal(msgJson, &meta)
if err != nil {
LOG.ERROR("Unmarshalling meta: %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.CmdList中的命令前缀
for _, prefix := range cmdPrefix {
if strings.HasPrefix(text, prefix) {
text = strings.TrimPrefix(text, prefix)
for cmd := range CmdMap {
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{"/", "!", "", "", ".", "。"}