@@ -89,11 +89,13 @@ func (m *Control) Reset(groupID int64) {
8989func (m * Control ) IsEnabledIn (gid int64 ) bool {
9090 var c grpcfg
9191 var err error
92+ logrus .Debugln ("[control] IsEnabledIn recv gid =" , gid )
9293 if gid != 0 {
9394 m .RLock ()
9495 err = db .Find (m .service , & c , "WHERE gid = " + strconv .FormatInt (gid , 10 ))
9596 m .RUnlock ()
96- if err == nil {
97+ logrus .Debugln ("[control] db find gid =" , c .GroupID )
98+ if err == nil && gid == c .GroupID {
9799 logrus .Debugf ("[control] plugin %s of grp %d : %d" , m .service , c .GroupID , c .Disable )
98100 return c .Disable == 0
99101 }
@@ -102,7 +104,7 @@ func (m *Control) IsEnabledIn(gid int64) bool {
102104 err = db .Find (m .service , & c , "WHERE gid = 0" )
103105 m .RUnlock ()
104106 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 )
106108 return c .Disable == 0
107109 }
108110 return ! m .options .DisableOnDefault
@@ -117,6 +119,7 @@ func (m *Control) Handler() zero.Rule {
117119 // 个人用户
118120 grp = - ctx .Event .UserID
119121 }
122+ logrus .Debugln ("[control] handler get gid =" , grp )
120123 return m .IsEnabledIn (grp )
121124 }
122125}
@@ -150,6 +153,13 @@ func copyMap(m map[string]*Control) map[string]*Control {
150153 return ret
151154}
152155
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+
153163func init () {
154164 if ! hasinit {
155165 mu .Lock ()
@@ -162,12 +172,7 @@ func init() {
162172 zero .OnCommandGroup ([]string {
163173 "启用" , "enable" , "禁用" , "disable" ,
164174 "全局启用" , "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 ) {
171176 model := extension.CommandModel {}
172177 _ = ctx .Parse (& model )
173178 service , ok := Lookup (model .Args )
@@ -191,12 +196,7 @@ func init() {
191196 }
192197 })
193198
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 ) {
200200 model := extension.CommandModel {}
201201 _ = ctx .Parse (& model )
202202 service , ok := Lookup (model .Args )
@@ -212,7 +212,7 @@ func init() {
212212 ctx .SendChain (message .Text ("已还原服务的默认启用状态: " + model .Args ))
213213 })
214214
215- zero .OnCommandGroup ([]string {"用法" , "usage" }, zero . AdminPermission , zero . OnlyGroup ).
215+ zero .OnCommandGroup ([]string {"用法" , "usage" }, userOrGrpAdmin ).
216216 Handle (func (ctx * zero.Ctx ) {
217217 model := extension.CommandModel {}
218218 _ = ctx .Parse (& model )
@@ -227,14 +227,15 @@ func init() {
227227 }
228228 })
229229
230- zero .OnCommandGroup ([]string {"服务列表" , "service_list" }, zero . AdminPermission , zero . OnlyGroup ).
230+ zero .OnCommandGroup ([]string {"服务列表" , "service_list" }, userOrGrpAdmin ).
231231 Handle (func (ctx * zero.Ctx ) {
232232 msg := `---服务列表---`
233233 i := 0
234+ gid := ctx .Event .GroupID
234235 ForEach (func (key string , manager * Control ) bool {
235236 i ++
236237 msg += "\n " + strconv .Itoa (i ) + `: `
237- if manager .IsEnabledIn (ctx . Event . GroupID ) {
238+ if manager .IsEnabledIn (gid ) {
238239 msg += "●" + key
239240 } else {
240241 msg += "○" + key
0 commit comments