/
mgnt.go
90 lines (77 loc) · 3.48 KB
/
mgnt.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package chat
import (
"fmt"
"github.com/ceobebot/qqchannel/plugin"
"github.com/ceobebot/qqchannel/processor"
"github.com/ceobebot/qqchannel/processor/message"
"strings"
)
type ManagementCommand struct {
plugin.TextReplyMessageBaseImplementation
}
func (m ManagementCommand) Name() string {
return "ChatManagement"
}
func (m ManagementCommand) Description() string {
return "管理Chat插件"
}
func (m ManagementCommand) Example() string {
return "/chat mgnt [子命令]"
}
func (m ManagementCommand) Triggered(content string) (triggered bool) {
return strings.HasPrefix(content, "mgnt ")
}
func (m ManagementCommand) Handle(payload processor.Payload) (replyMessage message.Message) {
command := strings.Split(payload.Content, " ")[1]
switch command {
case "ap", "添加权限", "add", "添加":
return m.addPermission(payload)
case "rp", "删除权限", "remove", "删除":
return m.removePermission(payload)
case "lp", "列举权限", "list", "列举":
return m.listPermission(payload)
case "dp", "默认权限", "default", "默认":
permissions := strings.Join(defaultPermission.AllPermissions(), ", ")
return message.NewTextMessage().Text(fmt.Sprintf("默认权限有: %s", permissions))
default:
return message.NewTextMessage().Text("未知的子命令")
}
}
func (m ManagementCommand) addPermission(payload processor.Payload) (replyMessage message.Message) {
userList := message.GetAtMembersFromRawContent(payload.RawContent, 1)
if len(userList) == 0 {
return message.NewTextMessage().Text("没有检查到足够的参数,请 @ 需要添加权限的用户")
}
if addErr := addPermission(payload.Message.Author.ID, payload.Message.Author.Username, strings.Split(payload.Content, " ")[2:]...); addErr != nil {
return message.NewTextMessage().Text(fmt.Sprintf("添加权限失败: %s", addErr.Error()))
} else {
return message.NewTextMessage().Text(fmt.Sprintf("添加权限成功: 共 %d 条记录", len(userList)))
}
}
func (m ManagementCommand) removePermission(payload processor.Payload) (replyMessage message.Message) {
userList := message.GetAtMembersFromRawContent(payload.RawContent, 1)
if len(userList) == 0 {
return message.NewTextMessage().Text("没有检查到足够的参数,请 @ 需要删除权限的用户")
} else if len(userList) > 1 {
return message.NewTextMessage().Text("只能删除一个用户的权限")
}
if removeErr := removePermission(payload.Message.Author.ID, strings.Split(payload.Content, " ")[2:]...); removeErr != nil {
return message.NewTextMessage().Text(fmt.Sprintf("删除权限失败: %s", removeErr.Error()))
} else {
return message.NewTextMessage().Text(fmt.Sprintf("删除权限成功: 共 %d 条记录", len(userList)))
}
}
func (m ManagementCommand) listPermission(payload processor.Payload) (replyMessage message.Message) {
userList := message.GetAtMembersFromRawContent(payload.RawContent, 1)
if len(userList) == 0 {
return message.NewTextMessage().Text("没有检查到足够的参数,请 @ 需要列举权限的用户")
} else if len(userList) > 1 {
return message.NewTextMessage().Text("只能列举一个用户的权限")
}
if permission, listErr := getPermission(payload.Message.Author.ID); listErr != nil {
return message.NewTextMessage().Text(fmt.Sprintf("列举权限失败: %s", listErr.Error()))
} else {
permissions := strings.Join(PermissionData(permission.Permissions).AllPermissions(), ", ")
return message.NewTextMessage().Text(fmt.Sprintf("用户 %s 的权限有: %s", permission.UserName, permissions))
}
}