diff --git a/binary/jce/structs.go b/binary/jce/structs.go index 246214fb..9583912d 100644 --- a/binary/jce/structs.go +++ b/binary/jce/structs.go @@ -739,6 +739,7 @@ func (pkt *TroopMemberInfo) ReadFrom(r *JceReader) { pkt.Flag = r.ReadInt64(18) pkt.SpecialTitle = r.ReadString(23) pkt.SpecialTitleExpireTime = r.ReadInt64(24) + pkt.ShutUpTimestap = r.ReadInt64(30) } func (pkt *PushMessageInfo) ReadFrom(r *JceReader) { diff --git a/client/client.go b/client/client.go index 1410997b..534c2cf3 100644 --- a/client/client.go +++ b/client/client.go @@ -662,7 +662,7 @@ func (c *QQClient) GetGroupMembers(group *GroupInfo) ([]*GroupMemberInfo, error) if data == nil { return nil, errors.New("group member list unavailable: rsp is nil") } - rsp := data.(groupMemberListResponse) + rsp := data.(*groupMemberListResponse) nextUin = rsp.NextUin for _, m := range rsp.list { m.Group = group diff --git a/client/decoders.go b/client/decoders.go index cc36e191..5bee5cce 100644 --- a/client/decoders.go +++ b/client/decoders.go @@ -464,7 +464,7 @@ func decodeFriendGroupListResponse(_ *QQClient, _ *incomingPacketInfo, payload [ data.ReadFrom(jce.NewJceReader(request.SBuffer)) r := jce.NewJceReader(data.Map["FLRESP"][1:]) totalFriendCount := r.ReadInt16(5) - friends := []jce.FriendInfo{} + friends := make([]jce.FriendInfo, 0) r.ReadSlice(&friends, 7) l := make([]*FriendInfo, 0, len(friends)) for _, f := range friends { @@ -536,7 +536,7 @@ func decodeGroupMemberListResponse(_ *QQClient, _ *incomingPacketInfo, payload [ data := &jce.RequestDataVersion3{} data.ReadFrom(jce.NewJceReader(request.SBuffer)) r := jce.NewJceReader(data.Map["GTMLRESP"][1:]) - members := []jce.TroopMemberInfo{} + members := make([]jce.TroopMemberInfo, 0) r.ReadSlice(&members, 3) next := r.ReadInt64(4) l := make([]*GroupMemberInfo, 0, len(members)) @@ -551,6 +551,7 @@ func decodeGroupMemberListResponse(_ *QQClient, _ *incomingPacketInfo, payload [ LastSpeakTime: m.LastSpeakTime, SpecialTitle: m.SpecialTitle, SpecialTitleExpireTime: m.SpecialTitleExpireTime, + ShutUpTimestamp: m.ShutUpTimestap, Permission: func() MemberPermission { if m.Flag == 1 { return Administrator @@ -559,7 +560,7 @@ func decodeGroupMemberListResponse(_ *QQClient, _ *incomingPacketInfo, payload [ }(), }) } - return groupMemberListResponse{ + return &groupMemberListResponse{ NextUin: next, list: l, }, nil diff --git a/client/group_info.go b/client/group_info.go index 2d9c10a8..5a233a62 100644 --- a/client/group_info.go +++ b/client/group_info.go @@ -50,6 +50,7 @@ type ( LastSpeakTime int64 SpecialTitle string SpecialTitleExpireTime int64 + ShutUpTimestamp int64 Permission MemberPermission }