mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 11:07:40 +08:00
fix issue of repeatedly trigger for LeaveGroupEvent.
This commit is contained in:
parent
c6b4c61122
commit
cc2ce301a3
@ -262,6 +262,8 @@ func (c *QQClient) UploadGroupImage(groupUin int64, img []byte) (*message.GroupI
|
||||
}
|
||||
|
||||
func (c *QQClient) ReloadGroupList() error {
|
||||
c.groupListLock.Lock()
|
||||
defer c.groupListLock.Unlock()
|
||||
list, err := c.GetGroupList()
|
||||
if err != nil {
|
||||
return err
|
||||
@ -271,8 +273,6 @@ func (c *QQClient) ReloadGroupList() error {
|
||||
}
|
||||
|
||||
func (c *QQClient) GetGroupList() ([]*GroupInfo, error) {
|
||||
c.groupListLock.Lock()
|
||||
defer c.groupListLock.Unlock()
|
||||
rsp, err := c.sendAndWait(c.buildGroupListRequestPacket())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -12,7 +12,8 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
groupJoinLock = new(sync.Mutex)
|
||||
groupJoinLock = new(sync.Mutex)
|
||||
groupLeaveLock = new(sync.Mutex)
|
||||
)
|
||||
|
||||
func decodeLoginResponse(c *QQClient, seq uint16, payload []byte) (interface{}, error) {
|
||||
@ -395,12 +396,15 @@ func decodeOnlinePushReqPacket(c *QQClient, seq uint16, payload []byte) (interfa
|
||||
if err := proto.Unmarshal(probuf, &d4); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
groupLeaveLock.Lock()
|
||||
if g := c.FindGroup(d4.Uin); g != nil {
|
||||
if err := c.ReloadGroupList(); err != nil {
|
||||
groupLeaveLock.Unlock()
|
||||
return nil, err
|
||||
}
|
||||
c.dispatchLeaveGroupEvent(&GroupLeaveEvent{Group: g})
|
||||
}
|
||||
groupLeaveLock.Unlock()
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -423,6 +427,8 @@ func decodeOnlinePushTransPacket(c *QQClient, seq uint16, payload []byte) (inter
|
||||
operator := int64(uint32(data.ReadInt32()))
|
||||
switch typ {
|
||||
case 0x03:
|
||||
groupLeaveLock.Lock()
|
||||
defer groupLeaveLock.Unlock()
|
||||
if g := c.FindGroup(info.FromUin); g != nil {
|
||||
if err = c.ReloadGroupList(); err != nil {
|
||||
return nil, err
|
||||
|
Loading…
x
Reference in New Issue
Block a user