1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 19:17:38 +08:00

add: MemberCardUpdatedEvent.

This commit is contained in:
Mrs4s 2020-10-04 12:52:22 +08:00
parent 737a80c701
commit 6da8636424
3 changed files with 37 additions and 0 deletions

View File

@ -119,6 +119,12 @@ type (
Member *GroupMemberInfo Member *GroupMemberInfo
} }
MemberCardUpdatedEvent struct {
Group *GroupInfo
OldCard string
Member *GroupMemberInfo
}
IGroupNotifyEvent interface { IGroupNotifyEvent interface {
From() int64 From() int64
Content() string Content() string

View File

@ -17,6 +17,7 @@ type eventHandlers struct {
leaveGroupHandlers []func(*QQClient, *GroupLeaveEvent) leaveGroupHandlers []func(*QQClient, *GroupLeaveEvent)
memberJoinedHandlers []func(*QQClient, *MemberJoinGroupEvent) memberJoinedHandlers []func(*QQClient, *MemberJoinGroupEvent)
memberLeavedHandlers []func(*QQClient, *MemberLeaveGroupEvent) memberLeavedHandlers []func(*QQClient, *MemberLeaveGroupEvent)
memberCardUpdatedHandlers []func(*QQClient, *MemberCardUpdatedEvent)
permissionChangedHandlers []func(*QQClient, *MemberPermissionChangedEvent) permissionChangedHandlers []func(*QQClient, *MemberPermissionChangedEvent)
groupInvitedHandlers []func(*QQClient, *GroupInvitedRequest) groupInvitedHandlers []func(*QQClient, *GroupInvitedRequest)
joinRequestHandlers []func(*QQClient, *UserJoinGroupRequest) joinRequestHandlers []func(*QQClient, *UserJoinGroupRequest)
@ -69,6 +70,10 @@ func (c *QQClient) OnGroupMemberLeaved(f func(*QQClient, *MemberLeaveGroupEvent)
c.eventHandlers.memberLeavedHandlers = append(c.eventHandlers.memberLeavedHandlers, f) c.eventHandlers.memberLeavedHandlers = append(c.eventHandlers.memberLeavedHandlers, f)
} }
func (c *QQClient) OnGroupMemberCardUpdated(f func(*QQClient, *MemberCardUpdatedEvent)) {
c.eventHandlers.memberCardUpdatedHandlers = append(c.eventHandlers.memberCardUpdatedHandlers, f)
}
func (c *QQClient) OnGroupMemberPermissionChanged(f func(*QQClient, *MemberPermissionChangedEvent)) { func (c *QQClient) OnGroupMemberPermissionChanged(f func(*QQClient, *MemberPermissionChangedEvent)) {
c.eventHandlers.permissionChangedHandlers = append(c.eventHandlers.permissionChangedHandlers, f) c.eventHandlers.permissionChangedHandlers = append(c.eventHandlers.permissionChangedHandlers, f)
} }
@ -237,6 +242,17 @@ func (c *QQClient) dispatchMemberLeaveEvent(e *MemberLeaveGroupEvent) {
} }
} }
func (c *QQClient) dispatchMemberCardUpdatedEvent(e *MemberCardUpdatedEvent) {
if e == nil {
return
}
for _, f := range c.eventHandlers.memberCardUpdatedHandlers {
cover(func() {
f(c, e)
})
}
}
func (c *QQClient) dispatchPermissionChanged(e *MemberPermissionChangedEvent) { func (c *QQClient) dispatchPermissionChanged(e *MemberPermissionChangedEvent) {
if e == nil { if e == nil {
return return

View File

@ -311,6 +311,21 @@ func (c *QQClient) parseGroupMessage(m *msg.Message) *message.GroupMessage {
Member: info, Member: info,
}) })
} }
if m.Head.GroupInfo != nil && m.Head.GroupInfo.GroupCard != "" && mem.CardName != m.Head.GroupInfo.GroupCard {
old := mem.CardName
if mem.Nickname == m.Head.GroupInfo.GroupCard {
mem.CardName = ""
} else {
mem.CardName = m.Head.GroupInfo.GroupCard
}
if old != mem.CardName {
go c.dispatchMemberCardUpdatedEvent(&MemberCardUpdatedEvent{
Group: group,
OldCard: old,
Member: mem,
})
}
}
sender = &message.Sender{ sender = &message.Sender{
Uin: mem.Uin, Uin: mem.Uin,
Nickname: mem.Nickname, Nickname: mem.Nickname,