111 lines
2.5 KiB
Go
111 lines
2.5 KiB
Go
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
|
|
}
|