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:
parent
3d5487fcb3
commit
b87fc53213
@ -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
|
||||
}
|
||||
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user