package workers import ( "bytes" "encoding/json" "fmt" "go-bot/config" "net/http" ) type StdAns struct { AllowGroup []interface{} AllowUser []interface{} AllowRole []interface{} BlockGroup []interface{} BlockUser []interface{} 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 { // var cfg map[string]interface{} cfg = config.GetConfig() // println("AllowGroup:", cfg["AllowGroup"].([]interface{})) return &StdAns{ Parms: parms, UID: uid, GID: gid, Role: role, MID: mid, RawMsg: rawMsg, AllowGroup: cfg["AllowGroup"].([]interface{}), AllowUser: cfg["AllowUser"].([]interface{}), AllowRole: cfg["AllowRole"].([]interface{}), BlockGroup: cfg["BlockGroup"].([]interface{}), BlockUser: cfg["BlockUser"].([]interface{}), 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 []interface{}, 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 }