package workers import ( "bytes" "encoding/json" "fmt" "go-bot/config" "io" "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 } 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: []string{}, AllowUser: []string{}, AllowRole: []string{}, BlockGroup: []string{}, 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 { if s.Parms[0] != "" { return "咱也不知道 " + s.Parms[0] + "是啥呢!" } else { return "汝再调戏咱,咱可就生气了!!" } } func (s *StdAns) SendMsg(msg string) bool { 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 } re, err := json.MarshalIndent(requestBody, "", " ") if err != nil { fmt.Println("Error marshaling JSON:", err) return false } fmt.Println(string(re)) config.LoadConfig() url := config.APIURL fmt.Println("请求地址:", url) fmt.Println("响应信息:", 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 }