1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 19:17:38 +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,23 +758,25 @@ func decodeOnlinePushReqPacket(c *QQClient, seq uint16, payload []byte) (interfa
if s44.GroupSyncMsg.GetGrpCode() != 0 { // member sync
c.Debug("syncing members.")
if group := c.FindGroup(s44.GroupSyncMsg.GetGrpCode()); group != nil {
var lastJoinTime int64 = 0
for _, m := range group.Members {
if lastJoinTime < m.JoinTime {
lastJoinTime = m.JoinTime
}
}
if newMem, err := c.GetGroupMembers(group); err == nil {
group.Members = newMem
for _, m := range newMem {
group.Update(func(_ *GroupInfo) {
var lastJoinTime int64 = 0
for _, m := range group.Members {
if lastJoinTime < m.JoinTime {
c.dispatchNewMemberEvent(&MemberJoinGroupEvent{
Group: group,
Member: m,
})
lastJoinTime = m.JoinTime
}
}
}
if newMem, err := c.GetGroupMembers(group); err == nil {
group.Members = newMem
for _, m := range newMem {
if lastJoinTime < m.JoinTime {
go c.dispatchNewMemberEvent(&MemberJoinGroupEvent{
Group: group,
Member: m,
})
}
}
}
})
}
}
}()
@ -782,7 +784,6 @@ func decodeOnlinePushReqPacket(c *QQClient, seq uint16, payload []byte) (interfa
}
}
}
return nil, nil
}

View File

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