Skip to content

Commit 657d625

Browse files
authored
fix: 优化获取群成员数据 (#41)
1. Uin 在事件解析时已正常处理 2. 部分退群用户没缓存可能导致 member 为空 所以后续直接用 e.UserUin 防止报错
1 parent d27932c commit 657d625

File tree

3 files changed

+15
-13
lines changed

3 files changed

+15
-13
lines changed

coolq/event.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -349,12 +349,15 @@ func (bot *CQBot) joinGroupEvent(c *client.QQClient, event *event2.GroupMemberIn
349349
}
350350

351351
func (bot *CQBot) leaveGroupEvent(c *client.QQClient, e *event2.GroupMemberDecrease) {
352+
group := c.GetCachedGroupInfo(e.GroupUin)
353+
var op *entity.GroupMember
352354
if e.IsKicked() {
353-
log.Infof("Bot被 %v T出了群 %v.", formatMemberName(c.GetCachedMemberInfo(e.OperatorUin, e.GroupUin)), formatGroupName(c.GetCachedGroupInfo(e.GroupUin)))
355+
op = c.GetCachedMemberInfo(e.OperatorUin, e.GroupUin)
356+
log.Infof("Bot 被 %v 踢出了群 %v.", formatMemberName(op), formatGroupName(group))
354357
} else {
355-
log.Infof("Bot退出了群 %v.", formatGroupName(c.GetCachedGroupInfo(e.GroupUin)))
358+
log.Infof("Bot 退出了群 %v.", formatGroupName(group))
356359
}
357-
bot.dispatch(bot.groupDecrease(int64(e.GroupUin), int64(c.Uin), c.GetCachedMemberInfo(e.OperatorUin, e.GroupUin)))
360+
bot.dispatch(bot.groupDecrease(int64(e.GroupUin), int64(c.Uin), op))
358361
}
359362

360363
func (bot *CQBot) memberPermissionChangedEvent(_ *client.QQClient, e *event2.GroupMemberPermissionChanged) {
@@ -385,15 +388,16 @@ func (bot *CQBot) memberJoinEvent(c *client.QQClient, e *event2.GroupMemberIncre
385388
}
386389

387390
func (bot *CQBot) memberLeaveEvent(c *client.QQClient, e *event2.GroupMemberDecrease) {
388-
member := c.GetCachedMemberInfo(c.GetUin(e.UserUID, e.GroupUin), e.GroupUin)
389-
op := c.GetCachedMemberInfo(c.GetUin(e.OperatorUID, e.GroupUin), e.GroupUin)
391+
member := c.GetCachedMemberInfo(e.UserUin, e.GroupUin)
392+
var op *entity.GroupMember
390393
group := c.GetCachedGroupInfo(e.GroupUin)
391394
if e.IsKicked() {
392-
log.Infof("成员 %v 被 %v T出了群 %v.", formatMemberName(member), formatMemberName(op), formatGroupName(group))
395+
op = c.GetCachedMemberInfo(e.OperatorUin, e.GroupUin)
396+
log.Infof("成员 %v 被 %v 踢出了群 %v.", formatMemberName(member), formatMemberName(op), formatGroupName(group))
393397
} else {
394398
log.Infof("成员 %v 离开了群 %v.", formatMemberName(member), formatGroupName(group))
395399
}
396-
bot.dispatch(bot.groupDecrease(int64(e.GroupUin), int64(member.Uin), op))
400+
bot.dispatch(bot.groupDecrease(int64(e.GroupUin), int64(e.UserUin), op))
397401
}
398402

399403
func (bot *CQBot) friendRequestEvent(_ *client.QQClient, e *event2.NewFriendRequest) {
@@ -502,11 +506,9 @@ func (bot *CQBot) groupIncrease(groupCode, operatorUin, userUin int64) *event {
502506

503507
func (bot *CQBot) groupDecrease(groupCode, userUin int64, operator *entity.GroupMember) *event {
504508
op := userUin
505-
if operator != nil {
506-
op = int64(operator.Uin)
507-
}
508509
subtype := "leave"
509510
if operator != nil {
511+
op = int64(operator.Uin)
510512
if userUin == int64(bot.Client.Uin) {
511513
subtype = "kick_me"
512514
} else {

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ toolchain go1.24.7
66

77
require (
88
github.com/FloatTech/sqlite v1.6.3
9-
github.com/LagrangeDev/LagrangeGo v0.1.5-0.20251025062608-50907f2e480b
9+
github.com/LagrangeDev/LagrangeGo v0.1.5-0.20251030033604-587d2268813f
1010
github.com/Microsoft/go-winio v0.6.2-0.20230724192519-b29bbd58a65a
1111
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7
1212
github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ github.com/FloatTech/sqlite v1.6.3 h1:MQkqBNlkPuCoKQQgoNLuTL/2Ci3tBTFAnVYBdD0Wy4
22
github.com/FloatTech/sqlite v1.6.3/go.mod h1:zFbHzRfB+CJ+VidfjuVbrcin3DAz283F7hF1hIeHzpY=
33
github.com/FloatTech/ttl v0.0.0-20230307105452-d6f7b2b647d1 h1:g4pTnDJUW4VbJ9NvoRfUvdjDrHz/6QhfN/LoIIpICbo=
44
github.com/FloatTech/ttl v0.0.0-20230307105452-d6f7b2b647d1/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs=
5-
github.com/LagrangeDev/LagrangeGo v0.1.5-0.20251025062608-50907f2e480b h1:SssPjgmi/2RlR6W5VLSPrec2+D4j8nGbGauEn+zQJFc=
6-
github.com/LagrangeDev/LagrangeGo v0.1.5-0.20251025062608-50907f2e480b/go.mod h1:qwYPEv+WsrOeAKelGXbNerqY1FBZbOVK5RBRDi/jN4U=
5+
github.com/LagrangeDev/LagrangeGo v0.1.5-0.20251030033604-587d2268813f h1:lRCs5MGWTEjxFvypEOguxKWDFN+VpYu5XQpWiTMMyDE=
6+
github.com/LagrangeDev/LagrangeGo v0.1.5-0.20251030033604-587d2268813f/go.mod h1:qwYPEv+WsrOeAKelGXbNerqY1FBZbOVK5RBRDi/jN4U=
77
github.com/Microsoft/go-winio v0.6.2-0.20230724192519-b29bbd58a65a h1:aU1703IHxupjzipvhu16qYKLMR03e+8WuNR+JMsKfGU=
88
github.com/Microsoft/go-winio v0.6.2-0.20230724192519-b29bbd58a65a/go.mod h1:OZqLNXdYJHmx7aqq/T6wAdFEdoGm5nmIfC4kU7M8P8o=
99
github.com/RomiChan/protobuf v0.1.1-0.20230204044148-2ed269a2e54d h1:/Xuj3fIiMY2ls1TwvPKmaqQrtJsPY+c9s+0lOScVHd8=

0 commit comments

Comments
 (0)