1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-05 03:23:50 +08:00

fix group member join event.

This commit is contained in:
Mrs4s 2020-12-10 01:57:34 +08:00
parent 3d5487fcb3
commit b87fc53213
2 changed files with 32 additions and 23 deletions

View File

@ -758,6 +758,7 @@ func decodeOnlinePushReqPacket(c *QQClient, seq uint16, payload []byte) (interfa
if s44.GroupSyncMsg.GetGrpCode() != 0 { // member sync if s44.GroupSyncMsg.GetGrpCode() != 0 { // member sync
c.Debug("syncing members.") c.Debug("syncing members.")
if group := c.FindGroup(s44.GroupSyncMsg.GetGrpCode()); group != nil { if group := c.FindGroup(s44.GroupSyncMsg.GetGrpCode()); group != nil {
group.Update(func(_ *GroupInfo) {
var lastJoinTime int64 = 0 var lastJoinTime int64 = 0
for _, m := range group.Members { for _, m := range group.Members {
if lastJoinTime < m.JoinTime { if lastJoinTime < m.JoinTime {
@ -768,13 +769,14 @@ func decodeOnlinePushReqPacket(c *QQClient, seq uint16, payload []byte) (interfa
group.Members = newMem group.Members = newMem
for _, m := range newMem { for _, m := range newMem {
if lastJoinTime < m.JoinTime { if lastJoinTime < m.JoinTime {
c.dispatchNewMemberEvent(&MemberJoinGroupEvent{ go c.dispatchNewMemberEvent(&MemberJoinGroupEvent{
Group: group, Group: group,
Member: m, Member: m,
}) })
} }
} }
} }
})
} }
} }
}() }()
@ -782,7 +784,6 @@ func decodeOnlinePushReqPacket(c *QQClient, seq uint16, payload []byte) (interfa
} }
} }
} }
return nil, nil return nil, nil
} }

View File

@ -450,9 +450,13 @@ func (c *QQClient) parseGroupMessage(m *msg.Message) *message.GroupMessage {
} else { } else {
mem := group.FindMember(m.Head.GetFromUin()) mem := group.FindMember(m.Head.GetFromUin())
if mem == nil { if mem == nil {
group.Update(func(_ *GroupInfo) {
if mem = group.FindMember(m.Head.GetFromUin()); mem != nil {
return
}
info, _ := c.getMemberInfo(group.Code, m.Head.GetFromUin()) info, _ := c.getMemberInfo(group.Code, m.Head.GetFromUin())
if info == nil { if info == nil {
return nil return
} }
mem = info mem = info
group.Members = append(group.Members, mem) group.Members = append(group.Members, mem)
@ -460,6 +464,10 @@ func (c *QQClient) parseGroupMessage(m *msg.Message) *message.GroupMessage {
Group: group, Group: group,
Member: info, Member: info,
}) })
})
if mem == nil {
return nil
}
} }
sender = &message.Sender{ sender = &message.Sender{
Uin: mem.Uin, Uin: mem.Uin,