1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 11:07:40 +08:00

client: delete SpecialTitleExpireTime field in GroupMemberInfo

This commit is contained in:
wdvxdr 2022-05-23 12:01:38 +08:00
parent b28ec81f54
commit a9a08dbb3a
No known key found for this signature in database
GPG Key ID: 703F8C071DE7A1B6
3 changed files with 57 additions and 50 deletions

View File

@ -538,16 +538,15 @@ func decodeGroupMemberListResponse(_ *QQClient, _ *network.IncomingPacketInfo, p
l := make([]*GroupMemberInfo, 0, len(members)) l := make([]*GroupMemberInfo, 0, len(members))
for _, m := range members { for _, m := range members {
l = append(l, &GroupMemberInfo{ l = append(l, &GroupMemberInfo{
Uin: m.MemberUin, Uin: m.MemberUin,
Nickname: m.Nick, Nickname: m.Nick,
Gender: m.Gender, Gender: m.Gender,
CardName: m.Name, CardName: m.Name,
Level: uint16(m.MemberLevel), Level: uint16(m.MemberLevel),
JoinTime: m.JoinTime, JoinTime: m.JoinTime,
LastSpeakTime: m.LastSpeakTime, LastSpeakTime: m.LastSpeakTime,
SpecialTitle: m.SpecialTitle, SpecialTitle: m.SpecialTitle,
SpecialTitleExpireTime: m.SpecialTitleExpireTime, ShutUpTimestamp: m.ShutUpTimestap,
ShutUpTimestamp: m.ShutUpTimestap,
Permission: func() MemberPermission { Permission: func() MemberPermission {
if m.Flag == 1 { if m.Flag == 1 {
return Administrator return Administrator
@ -572,26 +571,24 @@ func decodeGroupMemberInfoResponse(c *QQClient, _ *network.IncomingPacketInfo, p
return nil, errors.WithStack(ErrMemberNotFound) return nil, errors.WithStack(ErrMemberNotFound)
} }
group := c.FindGroup(rsp.GroupCode) group := c.FindGroup(rsp.GroupCode)
permission := Member
if rsp.MemInfo.Uin == group.OwnerUin {
permission = Owner
}
if rsp.MemInfo.Role == 2 {
permission = Administrator
}
return &GroupMemberInfo{ return &GroupMemberInfo{
Group: group, Group: group,
Uin: rsp.MemInfo.Uin, Uin: rsp.MemInfo.Uin,
Gender: byte(rsp.MemInfo.Sex), Gender: byte(rsp.MemInfo.Sex),
Nickname: string(rsp.MemInfo.Nick), Nickname: string(rsp.MemInfo.Nick),
CardName: string(rsp.MemInfo.Card), CardName: string(rsp.MemInfo.Card),
Level: uint16(rsp.MemInfo.Level), Level: uint16(rsp.MemInfo.Level),
JoinTime: rsp.MemInfo.Join, JoinTime: rsp.MemInfo.Join,
LastSpeakTime: rsp.MemInfo.LastSpeak, LastSpeakTime: rsp.MemInfo.LastSpeak,
SpecialTitle: string(rsp.MemInfo.SpecialTitle), SpecialTitle: string(rsp.MemInfo.SpecialTitle),
SpecialTitleExpireTime: int64(rsp.MemInfo.SpecialTitleExpireTime), Permission: permission,
Permission: func() MemberPermission {
if rsp.MemInfo.Uin == group.OwnerUin {
return Owner
}
if rsp.MemInfo.Role == 2 {
return Administrator
}
return Member
}(),
}, nil }, nil
} }
@ -713,12 +710,10 @@ func decodeOnlinePushTransPacket(c *QQClient, _ *network.IncomingPacketInfo, pay
} }
if g := c.FindGroupByUin(info.GetFromUin()); g != nil { if g := c.FindGroupByUin(info.GetFromUin()); g != nil {
if var5 == 0 && data.Len() == 1 { if var5 == 0 && data.Len() == 1 {
newPermission := func() MemberPermission { newPermission := Member
if data.ReadByte() == 1 { if data.ReadByte() == 1 {
return Administrator newPermission = Administrator
} }
return Member
}()
mem := g.FindMember(target) mem := g.FindMember(target)
if mem.Permission != newPermission { if mem.Permission != newPermission {
old := mem.Permission old := mem.Permission
@ -782,7 +777,7 @@ func decodeMSFOfflinePacket(c *QQClient, _ *network.IncomingPacketInfo, _ []byte
// OidbSvc.0xd79 // OidbSvc.0xd79
func decodeWordSegmentation(_ *QQClient, _ *network.IncomingPacketInfo, payload []byte) (any, error) { func decodeWordSegmentation(_ *QQClient, _ *network.IncomingPacketInfo, payload []byte) (any, error) {
rsp := &oidb.D79RspBody{} rsp := oidb.D79RspBody{}
err := unpackOIDBPackage(payload, &rsp) err := unpackOIDBPackage(payload, &rsp)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -333,8 +333,20 @@ func (c *QQClient) getWebDeviceInfo() (i string) {
return return
} }
var oidbSSOPool = sync.Pool{}
func getOidbSSOPackage() *oidb.OIDBSSOPkg {
g := oidbSSOPool.Get()
if g == nil {
return new(oidb.OIDBSSOPkg)
}
return g.(*oidb.OIDBSSOPkg)
}
func (c *QQClient) packOIDBPackage(cmd, serviceType int32, body []byte) []byte { func (c *QQClient) packOIDBPackage(cmd, serviceType int32, body []byte) []byte {
pkg := &oidb.OIDBSSOPkg{ pkg := getOidbSSOPackage()
defer oidbSSOPool.Put(pkg)
*pkg = oidb.OIDBSSOPkg{
Command: cmd, Command: cmd,
ServiceType: serviceType, ServiceType: serviceType,
Bodybuffer: body, Bodybuffer: body,
@ -354,7 +366,8 @@ func (c *QQClient) packOIDBPackageProto(cmd, serviceType int32, msg proto.Messag
} }
func unpackOIDBPackage(payload []byte, rsp proto.Message) error { func unpackOIDBPackage(payload []byte, rsp proto.Message) error {
pkg := new(oidb.OIDBSSOPkg) pkg := getOidbSSOPackage()
defer oidbSSOPool.Put(pkg)
if err := proto.Unmarshal(payload, pkg); err != nil { if err := proto.Unmarshal(payload, pkg); err != nil {
return errors.Wrap(err, "failed to unmarshal protobuf message") return errors.Wrap(err, "failed to unmarshal protobuf message")
} }

View File

@ -43,18 +43,17 @@ type (
} }
GroupMemberInfo struct { GroupMemberInfo struct {
Group *GroupInfo Group *GroupInfo
Uin int64 Uin int64
Gender byte Nickname string
Nickname string CardName string
CardName string JoinTime int64
Level uint16 LastSpeakTime int64
JoinTime int64 SpecialTitle string
LastSpeakTime int64 ShutUpTimestamp int64
SpecialTitle string Permission MemberPermission
SpecialTitleExpireTime int64 Level uint16
ShutUpTimestamp int64 Gender byte
Permission MemberPermission
} }
// GroupSearchInfo 通过搜索得到的群信息 // GroupSearchInfo 通过搜索得到的群信息