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

Merge pull request #319 from icarus-ai/master

添加事件: 群解散, 删除好友
This commit is contained in:
Mrs4s 2023-03-10 01:18:54 +08:00 committed by GitHub
commit 59abbee92a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 26 additions and 0 deletions

View File

@ -106,6 +106,8 @@ type QQClient struct {
GroupDigestEvent EventHandle[*GroupDigestEvent] GroupDigestEvent EventHandle[*GroupDigestEvent]
OtherClientStatusChangedEvent EventHandle[*OtherClientStatusChangedEvent] OtherClientStatusChangedEvent EventHandle[*OtherClientStatusChangedEvent]
OfflineFileEvent EventHandle[*OfflineFileEvent] OfflineFileEvent EventHandle[*OfflineFileEvent]
GroupDisbandEvent EventHandle[*GroupDisbandEvent]
DeleteFriendEvent EventHandle[*DeleteFriendEvent]
// message state // message state
msgSvcCache *utils.Cache[unit] msgSvcCache *utils.Cache[unit]

View File

@ -732,6 +732,15 @@ func decodeOnlinePushTransPacket(c *QQClient, pkt *network.Packet) (any, error)
Operator: g.FindMember(operator), Operator: g.FindMember(operator),
}) })
} }
case 0x01, 0x81: // kosbot add: 群解散. 暂时这样 See https://github.com/lz1998/ricq/blob/064ddddca19aa0410e2514852e3a151fd9913371/ricq-core/src/command/online_push/decoder.rs#L86
c.GroupDisbandEvent.dispatch(c, &GroupDisbandEvent{
Group: g,
Operator: g.FindMember(operator),
Time: int64(info.MsgTime.Unwrap()),
})
if err = c.ReloadGroupList(); err != nil {
return nil, err
}
} }
} }
} }

View File

@ -191,6 +191,17 @@ type (
DownloadUrl string DownloadUrl string
} }
GroupDisbandEvent struct {
Group *GroupInfo
Time int64
Operator *GroupMemberInfo
}
DeleteFriendEvent struct {
Uin int64
Nickname string
}
// GroupDigest 群精华消息 // GroupDigest 群精华消息
GroupDigest struct { GroupDigest struct {
GroupCode int64 `json:"group_code,string"` GroupCode int64 `json:"group_code,string"`

View File

@ -208,6 +208,10 @@ func msgType0x210Sub27Decoder(c *QQClient, protobuf []byte) error {
if m.DelFriend != nil { if m.DelFriend != nil {
frdUin := m.DelFriend.Uins[0] frdUin := m.DelFriend.Uins[0]
if frd := c.FindFriend(int64(frdUin)); frd != nil { if frd := c.FindFriend(int64(frdUin)); frd != nil {
c.DeleteFriendEvent.dispatch(c, &DeleteFriendEvent{
Uin: frd.Uin,
Nickname: frd.Nickname,
})
if err := c.ReloadFriendList(); err != nil { if err := c.ReloadFriendList(); err != nil {
return errors.Wrap(err, "failed to reload friend list") return errors.Wrap(err, "failed to reload friend list")
} }