-
-
Notifications
You must be signed in to change notification settings - Fork 70
/
hackedBot.go
128 lines (111 loc) · 2.45 KB
/
hackedBot.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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package utils
import (
"github.com/Mrs4s/MiraiGo/client"
miraiBot "github.com/Sora233/MiraiGo-Template/bot"
)
// HackedBot 拦截一些方法方便测试
type HackedBot struct {
Bot **miraiBot.Bot
testGroups []*client.GroupInfo
testUin int64
}
func (h *HackedBot) valid() bool {
if h == nil || h.Bot == nil || *h.Bot == nil || !(*h.Bot).Online {
return false
}
return true
}
func (h *HackedBot) FindFriend(uin int64) *client.FriendInfo {
if !h.valid() {
return nil
}
return (*h.Bot).FindFriend(uin)
}
func (h *HackedBot) FindGroup(code int64) *client.GroupInfo {
if !h.valid() {
for _, gi := range h.testGroups {
if gi.Code == code {
return gi
}
}
return nil
}
return (*h.Bot).FindGroup(code)
}
func (h *HackedBot) SolveFriendRequest(req *client.NewFriendRequest, accept bool) {
if !h.valid() {
return
}
(*h.Bot).SolveFriendRequest(req, accept)
}
func (h *HackedBot) SolveGroupJoinRequest(i interface{}, accept, block bool, reason string) {
if !h.valid() {
return
}
(*h.Bot).SolveGroupJoinRequest(i, accept, block, reason)
}
func (h *HackedBot) GetGroupList() []*client.GroupInfo {
if !h.valid() {
return h.testGroups
}
return (*h.Bot).GroupList
}
func (h *HackedBot) GetFriendList() []*client.FriendInfo {
if !h.valid() {
return nil
}
return (*h.Bot).FriendList
}
func (h *HackedBot) IsOnline() bool {
return h.valid()
}
func (h *HackedBot) GetUin() int64 {
if !h.valid() {
return h.testUin
}
return (*h.Bot).Uin
}
var hackedBot = &HackedBot{Bot: &miraiBot.Instance}
func GetBot() *HackedBot {
return hackedBot
}
// TESTSetUin 仅可用于测试
func (h *HackedBot) TESTSetUin(uin int64) {
h.testUin = uin
}
// TESTAddGroup 仅可用于测试
func (h *HackedBot) TESTAddGroup(groupCode int64) {
for _, g := range h.testGroups {
if g.Code == groupCode {
return
}
}
h.testGroups = append(h.testGroups, &client.GroupInfo{
Uin: groupCode,
Code: groupCode,
})
}
// TESTAddMember 仅可用于测试
func (h *HackedBot) TESTAddMember(groupCode int64, uin int64, permission client.MemberPermission) {
h.TESTAddGroup(groupCode)
for _, g := range h.testGroups {
if g.Code != groupCode {
continue
}
for _, m := range g.Members {
if m.Uin == uin {
return
}
}
g.Members = append(g.Members, &client.GroupMemberInfo{
Group: g,
Uin: uin,
Permission: permission,
})
}
}
// TESTReset 仅可用于测试
func (h *HackedBot) TESTReset() {
h.testGroups = nil
h.testUin = 0
}