From 5c4991c14f5b43fb144834b18c4cb905b57594eb Mon Sep 17 00:00:00 2001 From: Mrs4s Date: Fri, 18 Sep 2020 15:01:15 +0800 Subject: [PATCH] supported: group list lazy loading. --- client/decoders.go | 2 +- client/global.go | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/client/decoders.go b/client/decoders.go index c99fdd83..6d5d569a 100644 --- a/client/decoders.go +++ b/client/decoders.go @@ -291,7 +291,7 @@ func decodeGroupMessagePacket(c *QQClient, _ uint16, payload []byte) (interface{ return nil, nil } if pkt.Message.Content != nil && pkt.Message.Content.PkgNum > 1 { - var builder *groupMessageBuilder + var builder *groupMessageBuilder // TODO: 支持多SEQ i, ok := c.groupMsgBuilders.Load(pkt.Message.Content.DivSeq) if !ok { builder = &groupMessageBuilder{ diff --git a/client/global.go b/client/global.go index 8d58060f..beef55d0 100644 --- a/client/global.go +++ b/client/global.go @@ -267,7 +267,22 @@ func (c *QQClient) parseTempMessage(msg *msg.Message) *message.TempMessage { func (c *QQClient) parseGroupMessage(m *msg.Message) *message.GroupMessage { group := c.FindGroup(m.Head.GroupInfo.GroupCode) if group == nil { - return nil + c.Debug("sync group %v.", m.Head.GroupInfo.GroupCode) + info, err := c.GetGroupInfo(m.Head.GroupInfo.GroupCode) + if err != nil { + c.Error("error to sync group %v : %v", m.Head.GroupInfo.GroupCode, err) + return nil + } + group = info + c.GroupList = append(c.GroupList, info) + } + if len(group.Members) == 0 { + mem, err := c.GetGroupMembers(group) + if err != nil { + c.Error("error to sync group %v member : %v", m.Head.GroupInfo.GroupCode, err) + return nil + } + group.Members = mem } var anonInfo *msg.AnonymousGroupMessage for _, e := range m.Body.RichText.Elems {