@@ -89,11 +89,13 @@ func (m *Control) Reset(groupID int64) {
89
89
func (m * Control ) IsEnabledIn (gid int64 ) bool {
90
90
var c grpcfg
91
91
var err error
92
+ logrus .Debugln ("[control] IsEnabledIn recv gid =" , gid )
92
93
if gid != 0 {
93
94
m .RLock ()
94
95
err = db .Find (m .service , & c , "WHERE gid = " + strconv .FormatInt (gid , 10 ))
95
96
m .RUnlock ()
96
- if err == nil {
97
+ logrus .Debugln ("[control] db find gid =" , c .GroupID )
98
+ if err == nil && gid == c .GroupID {
97
99
logrus .Debugf ("[control] plugin %s of grp %d : %d" , m .service , c .GroupID , c .Disable )
98
100
return c .Disable == 0
99
101
}
@@ -102,7 +104,7 @@ func (m *Control) IsEnabledIn(gid int64) bool {
102
104
err = db .Find (m .service , & c , "WHERE gid = 0" )
103
105
m .RUnlock ()
104
106
if err == nil {
105
- logrus .Debugf ("[control] plugin %s of all : %d" , m .service , c .GroupID , c . Disable )
107
+ logrus .Debugf ("[control] plugin %s of all : %d" , m .service , c .Disable )
106
108
return c .Disable == 0
107
109
}
108
110
return ! m .options .DisableOnDefault
@@ -117,6 +119,7 @@ func (m *Control) Handler() zero.Rule {
117
119
// 个人用户
118
120
grp = - ctx .Event .UserID
119
121
}
122
+ logrus .Debugln ("[control] handler get gid =" , grp )
120
123
return m .IsEnabledIn (grp )
121
124
}
122
125
}
@@ -150,6 +153,13 @@ func copyMap(m map[string]*Control) map[string]*Control {
150
153
return ret
151
154
}
152
155
156
+ func userOrGrpAdmin (ctx * zero.Ctx ) bool {
157
+ if zero .OnlyGroup (ctx ) {
158
+ return zero .AdminPermission (ctx )
159
+ }
160
+ return zero .OnlyToMe (ctx )
161
+ }
162
+
153
163
func init () {
154
164
if ! hasinit {
155
165
mu .Lock ()
@@ -162,12 +172,7 @@ func init() {
162
172
zero .OnCommandGroup ([]string {
163
173
"启用" , "enable" , "禁用" , "disable" ,
164
174
"全局启用" , "enableall" , "全局禁用" , "disableall" ,
165
- }, func (ctx * zero.Ctx ) bool {
166
- if zero .OnlyGroup (ctx ) {
167
- return zero .AdminPermission (ctx )
168
- }
169
- return zero .OnlyToMe (ctx )
170
- }).Handle (func (ctx * zero.Ctx ) {
175
+ }, userOrGrpAdmin ).Handle (func (ctx * zero.Ctx ) {
171
176
model := extension.CommandModel {}
172
177
_ = ctx .Parse (& model )
173
178
service , ok := Lookup (model .Args )
@@ -191,12 +196,7 @@ func init() {
191
196
}
192
197
})
193
198
194
- zero .OnCommandGroup ([]string {"还原" , "reset" }, func (ctx * zero.Ctx ) bool {
195
- if zero .OnlyGroup (ctx ) {
196
- return zero .AdminPermission (ctx )
197
- }
198
- return zero .OnlyToMe (ctx )
199
- }).Handle (func (ctx * zero.Ctx ) {
199
+ zero .OnCommandGroup ([]string {"还原" , "reset" }, userOrGrpAdmin ).Handle (func (ctx * zero.Ctx ) {
200
200
model := extension.CommandModel {}
201
201
_ = ctx .Parse (& model )
202
202
service , ok := Lookup (model .Args )
@@ -212,7 +212,7 @@ func init() {
212
212
ctx .SendChain (message .Text ("已还原服务的默认启用状态: " + model .Args ))
213
213
})
214
214
215
- zero .OnCommandGroup ([]string {"用法" , "usage" }, zero . AdminPermission , zero . OnlyGroup ).
215
+ zero .OnCommandGroup ([]string {"用法" , "usage" }, userOrGrpAdmin ).
216
216
Handle (func (ctx * zero.Ctx ) {
217
217
model := extension.CommandModel {}
218
218
_ = ctx .Parse (& model )
@@ -227,14 +227,15 @@ func init() {
227
227
}
228
228
})
229
229
230
- zero .OnCommandGroup ([]string {"服务列表" , "service_list" }, zero . AdminPermission , zero . OnlyGroup ).
230
+ zero .OnCommandGroup ([]string {"服务列表" , "service_list" }, userOrGrpAdmin ).
231
231
Handle (func (ctx * zero.Ctx ) {
232
232
msg := `---服务列表---`
233
233
i := 0
234
+ gid := ctx .Event .GroupID
234
235
ForEach (func (key string , manager * Control ) bool {
235
236
i ++
236
237
msg += "\n " + strconv .Itoa (i ) + `: `
237
- if manager .IsEnabledIn (ctx . Event . GroupID ) {
238
+ if manager .IsEnabledIn (gid ) {
238
239
msg += "●" + key
239
240
} else {
240
241
msg += "○" + key
0 commit comments