From eae57aabf1bb85f150eb197c7ffa76ae51e955dd Mon Sep 17 00:00:00 2001 From: Mrs4s Date: Fri, 18 Sep 2020 14:46:08 +0800 Subject: [PATCH 1/2] fix group uin. --- client/builders.go | 1 + client/decoders.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/client/builders.go b/client/builders.go index 3a8f9f4a..2cc3700a 100644 --- a/client/builders.go +++ b/client/builders.go @@ -965,6 +965,7 @@ func (c *QQClient) buildGroupInfoRequestPacket(groupCode int64) (uint16, []byte) GroupCode: proto.Uint64(uint64(groupCode)), Stgroupinfo: &oidb.D88DGroupInfo{ GroupOwner: proto.Uint64(0), + GroupUin: proto.Uint64(0), GroupCreateTime: proto.Uint32(0), GroupFlag: proto.Uint32(0), GroupMemberMaxNum: proto.Uint32(0), diff --git a/client/decoders.go b/client/decoders.go index bb88c3fe..c99fdd83 100644 --- a/client/decoders.go +++ b/client/decoders.go @@ -403,7 +403,7 @@ func decodeGroupInfoResponse(c *QQClient, _ uint16, payload []byte) (interface{} } info := rsp.RspGroupInfo[0] return &GroupInfo{ - Uin: utils.ToGroupUin(int64(*info.GroupCode)), + Uin: int64(*info.GroupInfo.GroupUin), Code: int64(*info.GroupCode), Name: string(info.GroupInfo.GroupName), Memo: string(info.GroupInfo.GroupMemo), From 5c4991c14f5b43fb144834b18c4cb905b57594eb Mon Sep 17 00:00:00 2001 From: Mrs4s Date: Fri, 18 Sep 2020 15:01:15 +0800 Subject: [PATCH 2/2] 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 {