From 73e76029f53ae3d47ec3a06d70c7ab4f7a1fbc1f Mon Sep 17 00:00:00 2001 From: MiaoWoo Date: Thu, 30 Oct 2025 11:59:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E7=BE=A4=E6=88=90=E5=91=98=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Uin 在事件解析时已正常处理 2. 部分退群用户没缓存可能导致 member 为空 所以后续直接用 e.UserUin 防止报错 --- coolq/event.go | 22 ++++++++++++---------- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/coolq/event.go b/coolq/event.go index be99e9db8..f25e56ab8 100644 --- a/coolq/event.go +++ b/coolq/event.go @@ -349,12 +349,15 @@ func (bot *CQBot) joinGroupEvent(c *client.QQClient, event *event2.GroupMemberIn } func (bot *CQBot) leaveGroupEvent(c *client.QQClient, e *event2.GroupMemberDecrease) { + group := c.GetCachedGroupInfo(e.GroupUin) + var op *entity.GroupMember if e.IsKicked() { - log.Infof("Bot被 %v T出了群 %v.", formatMemberName(c.GetCachedMemberInfo(e.OperatorUin, e.GroupUin)), formatGroupName(c.GetCachedGroupInfo(e.GroupUin))) + op = c.GetCachedMemberInfo(e.OperatorUin, e.GroupUin) + log.Infof("Bot 被 %v 踢出了群 %v.", formatMemberName(op), formatGroupName(group)) } else { - log.Infof("Bot退出了群 %v.", formatGroupName(c.GetCachedGroupInfo(e.GroupUin))) + log.Infof("Bot 退出了群 %v.", formatGroupName(group)) } - bot.dispatch(bot.groupDecrease(int64(e.GroupUin), int64(c.Uin), c.GetCachedMemberInfo(e.OperatorUin, e.GroupUin))) + bot.dispatch(bot.groupDecrease(int64(e.GroupUin), int64(c.Uin), op)) } func (bot *CQBot) memberPermissionChangedEvent(_ *client.QQClient, e *event2.GroupMemberPermissionChanged) { @@ -385,15 +388,16 @@ func (bot *CQBot) memberJoinEvent(c *client.QQClient, e *event2.GroupMemberIncre } func (bot *CQBot) memberLeaveEvent(c *client.QQClient, e *event2.GroupMemberDecrease) { - member := c.GetCachedMemberInfo(c.GetUin(e.UserUID, e.GroupUin), e.GroupUin) - op := c.GetCachedMemberInfo(c.GetUin(e.OperatorUID, e.GroupUin), e.GroupUin) + member := c.GetCachedMemberInfo(e.UserUin, e.GroupUin) + var op *entity.GroupMember group := c.GetCachedGroupInfo(e.GroupUin) if e.IsKicked() { - log.Infof("成员 %v 被 %v T出了群 %v.", formatMemberName(member), formatMemberName(op), formatGroupName(group)) + op = c.GetCachedMemberInfo(e.OperatorUin, e.GroupUin) + log.Infof("成员 %v 被 %v 踢出了群 %v.", formatMemberName(member), formatMemberName(op), formatGroupName(group)) } else { log.Infof("成员 %v 离开了群 %v.", formatMemberName(member), formatGroupName(group)) } - bot.dispatch(bot.groupDecrease(int64(e.GroupUin), int64(member.Uin), op)) + bot.dispatch(bot.groupDecrease(int64(e.GroupUin), int64(e.UserUin), op)) } func (bot *CQBot) friendRequestEvent(_ *client.QQClient, e *event2.NewFriendRequest) { @@ -502,11 +506,9 @@ func (bot *CQBot) groupIncrease(groupCode, operatorUin, userUin int64) *event { func (bot *CQBot) groupDecrease(groupCode, userUin int64, operator *entity.GroupMember) *event { op := userUin - if operator != nil { - op = int64(operator.Uin) - } subtype := "leave" if operator != nil { + op = int64(operator.Uin) if userUin == int64(bot.Client.Uin) { subtype = "kick_me" } else { diff --git a/go.mod b/go.mod index 7fa9ad851..3829e9c53 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ toolchain go1.24.7 require ( github.com/FloatTech/sqlite v1.6.3 - github.com/LagrangeDev/LagrangeGo v0.1.5-0.20251025062608-50907f2e480b + github.com/LagrangeDev/LagrangeGo v0.1.5-0.20251030033604-587d2268813f github.com/Microsoft/go-winio v0.6.2-0.20230724192519-b29bbd58a65a github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7 github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5 diff --git a/go.sum b/go.sum index 15def234d..ff2297914 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,8 @@ github.com/FloatTech/sqlite v1.6.3 h1:MQkqBNlkPuCoKQQgoNLuTL/2Ci3tBTFAnVYBdD0Wy4 github.com/FloatTech/sqlite v1.6.3/go.mod h1:zFbHzRfB+CJ+VidfjuVbrcin3DAz283F7hF1hIeHzpY= github.com/FloatTech/ttl v0.0.0-20230307105452-d6f7b2b647d1 h1:g4pTnDJUW4VbJ9NvoRfUvdjDrHz/6QhfN/LoIIpICbo= github.com/FloatTech/ttl v0.0.0-20230307105452-d6f7b2b647d1/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs= -github.com/LagrangeDev/LagrangeGo v0.1.5-0.20251025062608-50907f2e480b h1:SssPjgmi/2RlR6W5VLSPrec2+D4j8nGbGauEn+zQJFc= -github.com/LagrangeDev/LagrangeGo v0.1.5-0.20251025062608-50907f2e480b/go.mod h1:qwYPEv+WsrOeAKelGXbNerqY1FBZbOVK5RBRDi/jN4U= +github.com/LagrangeDev/LagrangeGo v0.1.5-0.20251030033604-587d2268813f h1:lRCs5MGWTEjxFvypEOguxKWDFN+VpYu5XQpWiTMMyDE= +github.com/LagrangeDev/LagrangeGo v0.1.5-0.20251030033604-587d2268813f/go.mod h1:qwYPEv+WsrOeAKelGXbNerqY1FBZbOVK5RBRDi/jN4U= github.com/Microsoft/go-winio v0.6.2-0.20230724192519-b29bbd58a65a h1:aU1703IHxupjzipvhu16qYKLMR03e+8WuNR+JMsKfGU= github.com/Microsoft/go-winio v0.6.2-0.20230724192519-b29bbd58a65a/go.mod h1:OZqLNXdYJHmx7aqq/T6wAdFEdoGm5nmIfC4kU7M8P8o= github.com/RomiChan/protobuf v0.1.1-0.20230204044148-2ed269a2e54d h1:/Xuj3fIiMY2ls1TwvPKmaqQrtJsPY+c9s+0lOScVHd8=