package workers import ( "bytes" "encoding/json" "fmt" "go-bot/config" "net/http" ) type StdAns struct { AllowGroup []string AllowUser []string AllowRole []string BlockGroup []string BlockUser []string GroupNotAllow string UserNotAllow string RoleNotAllow string Parms []string UID string GID string Role string MID string RawMsg string } var cfg map[string]interface{} func init() { cfg = config.GetConfig() } func NewStdAns(parms []string, uid, gid, role, mid, rawMsg string) *StdAns { return &StdAns{ Parms: parms, UID: uid, GID: gid, Role: role, MID: mid, RawMsg: rawMsg, AllowGroup: cfg["AllowGroup"].([]string), AllowUser: cfg["AllowUser"].([]string), AllowRole: cfg["AllowRole"].([]string), BlockGroup: cfg["BlockGroup"].([]string), BlockUser: cfg["BlockUser"].([]string), GroupNotAllow: "汝所在的群组不被允许这样命令咱呢.", UserNotAllow: "汝不被允许呢.", RoleNotAllow: "汝的角色不被允许哦.", } } func (s *StdAns) CheckPermission() string { if (len(s.AllowGroup) > 0 && !contains(s.AllowGroup, s.GID)) || contains(s.BlockGroup, s.GID) { return s.GroupNotAllow } if (len(s.AllowUser) > 0 && !contains(s.AllowUser, s.UID)) || contains(s.BlockUser, s.UID) { return s.UserNotAllow } if len(s.AllowRole) > 0 && !contains(s.AllowRole, s.Role) { return s.RoleNotAllow } return "0" } func contains(slice []string, value string) bool { for _, item := range slice { if item == value { return true } } return false } func (s *StdAns) GetMsg() string { // 暂时设置权限校验不通过什么都不提示 return "-1" // if s.Parms[0] != "" { // return "咱也不知道 " + s.Parms[0] + "是啥呢!" // } else { // return "汝再调戏咱,咱可就生气了!!" // } } func (s *StdAns) SendMsg(msg string) bool { if msg == "-1" { return false } requestBody, err := json.Marshal(map[string]interface{}{ "action": "send_msg", "params": map[string]interface{}{ "group_id": s.GID, "message": msg, }, }) if err != nil { fmt.Println("Error marshaling JSON:", err) return false } _, err = json.MarshalIndent(requestBody, "", " ") if err != nil { fmt.Println("Error marshaling JSON:", err) return false } // fmt.Println(string(re)) url := cfg["POSTURL"].(string) // println("core:", url) // fmt.Println("请求地址:", url) fmt.Println("响应信息:\n", msg) resp, err := http.Post(url, "application/json", bytes.NewBuffer(requestBody)) if err != nil { fmt.Println("Error sending request:", err) return false } defer resp.Body.Close() // res, _ := io.ReadAll(resp.Body) // fmt.Println("响应返回:", string(res)) return true }