63 lines
1.6 KiB
Go
63 lines
1.6 KiB
Go
package utils
|
||
|
||
import (
|
||
"fmt"
|
||
"go-bot/config"
|
||
"go-bot/workers"
|
||
"regexp"
|
||
"strings"
|
||
)
|
||
|
||
func Router(data map[string]interface{}) {
|
||
|
||
// 输出格式化后的JSON
|
||
// fmt.Println(string(jsonString))
|
||
// 读取字段值
|
||
uid := data["user_id"].(float64)
|
||
gid := data["group_id"].(float64)
|
||
sender := data["sender"].(map[string]interface{})
|
||
role := sender["role"].(string)
|
||
mid := data["message_id"].(float64)
|
||
|
||
//包含发送消息的'!'
|
||
raw_msg := data["raw_message"].(string)
|
||
|
||
// 匹配回复消息
|
||
if strings.HasPrefix(raw_msg, "[CQ:reply,id=") {
|
||
pattern := `^\[CQ:reply,id=(-?\d+)\]`
|
||
re := regexp.MustCompile(pattern)
|
||
matches := re.FindStringSubmatch(raw_msg)
|
||
if len(matches) > 0 {
|
||
fullMatch := matches[0]
|
||
raw_msg = re.ReplaceAllString(raw_msg, "")
|
||
raw_msg = raw_msg + " " + fullMatch
|
||
}
|
||
}
|
||
prefix, err := config.GetConfig()["Prefix"].(string)
|
||
if !err {
|
||
panic("Prefix参数设置异常!")
|
||
|
||
}
|
||
// fmt.Println("raw_msg:", string(raw_msg))
|
||
if len(raw_msg) > 1 && string(raw_msg[0]) == prefix {
|
||
// 去除'!'
|
||
raw_msg = raw_msg[1:]
|
||
parms := strings.Fields(raw_msg)
|
||
|
||
worker := workers.NewWorker(parms, fmt.Sprintf("%d", int(uid)), fmt.Sprintf("%d", int(gid)), role, fmt.Sprintf("%d", int(mid)), raw_msg)
|
||
|
||
// fmt.Println("router:", parms[0])
|
||
// fmt.Println("CheckPermission:", worker.CheckPermission())
|
||
// ans := NewStdAns(parms[0], fmt.Sprintf("%d", int(uid)), fmt.Sprintf("%d", int(gid)), role, fmt.Sprintf("%d", int(mid)), raw_msg)
|
||
message := worker.CheckPermission()
|
||
if message == "ok" {
|
||
|
||
message = worker.GetMsg()
|
||
worker.SendMsg(message)
|
||
|
||
} else {
|
||
println("权限校验失败")
|
||
}
|
||
}
|
||
|
||
}
|