mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 19:17:38 +08:00
feature self group message event.
This commit is contained in:
parent
9054bf96ff
commit
9f1cf68e0e
@ -12,6 +12,7 @@ type eventHandlers struct {
|
||||
privateMessageHandlers []func(*QQClient, *message.PrivateMessage)
|
||||
tempMessageHandlers []func(*QQClient, *message.TempMessage)
|
||||
groupMessageHandlers []func(*QQClient, *message.GroupMessage)
|
||||
selfGroupMessageHandlers []func(*QQClient, *message.GroupMessage)
|
||||
groupMuteEventHandlers []func(*QQClient, *GroupMuteEvent)
|
||||
groupRecalledHandlers []func(*QQClient, *GroupMessageRecalledEvent)
|
||||
friendRecalledHandlers []func(*QQClient, *FriendMessageRecalledEvent)
|
||||
@ -56,6 +57,10 @@ func (c *QQClient) OnGroupMessage(f func(*QQClient, *message.GroupMessage)) {
|
||||
c.eventHandlers.groupMessageHandlers = append(c.eventHandlers.groupMessageHandlers, f)
|
||||
}
|
||||
|
||||
func (c *QQClient) OnSelfGroupMessage(f func(*QQClient, *message.GroupMessage)) {
|
||||
c.eventHandlers.selfGroupMessageHandlers = append(c.eventHandlers.selfGroupMessageHandlers, f)
|
||||
}
|
||||
|
||||
func (c *QQClient) OnGroupMuted(f func(*QQClient, *GroupMuteEvent)) {
|
||||
c.eventHandlers.groupMuteEventHandlers = append(c.eventHandlers.groupMuteEventHandlers, f)
|
||||
}
|
||||
@ -188,6 +193,17 @@ func (c *QQClient) dispatchGroupMessage(msg *message.GroupMessage) {
|
||||
}
|
||||
}
|
||||
|
||||
func (c *QQClient) dispatchGroupMessageSelf(msg *message.GroupMessage) {
|
||||
if msg == nil {
|
||||
return
|
||||
}
|
||||
for _, f := range c.eventHandlers.selfGroupMessageHandlers {
|
||||
cover(func() {
|
||||
f(c, msg)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (c *QQClient) dispatchGroupMuteEvent(e *GroupMuteEvent) {
|
||||
if e == nil {
|
||||
return
|
||||
|
@ -316,7 +316,6 @@ func decodeGroupMessagePacket(c *QQClient, _ uint16, payload []byte) (interface{
|
||||
Seq: pkt.Message.Head.GetMsgSeq(),
|
||||
Msg: c.parseGroupMessage(pkt.Message),
|
||||
})
|
||||
return nil, nil
|
||||
}
|
||||
if pkt.Message.Content != nil && pkt.Message.Content.GetPkgNum() > 1 {
|
||||
var builder *groupMessageBuilder
|
||||
@ -330,11 +329,19 @@ func decodeGroupMessagePacket(c *QQClient, _ uint16, payload []byte) (interface{
|
||||
builder.MessageSlices = append(builder.MessageSlices, pkt.Message)
|
||||
if int32(len(builder.MessageSlices)) >= pkt.Message.Content.GetPkgNum() {
|
||||
c.groupMsgBuilders.Delete(pkt.Message.Content.GetDivSeq())
|
||||
c.dispatchGroupMessage(c.parseGroupMessage(builder.build()))
|
||||
if pkt.Message.Head.GetFromUin() == c.Uin {
|
||||
c.dispatchGroupMessageSelf(c.parseGroupMessage(builder.build()))
|
||||
} else {
|
||||
c.dispatchGroupMessage(c.parseGroupMessage(builder.build()))
|
||||
}
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
c.dispatchGroupMessage(c.parseGroupMessage(pkt.Message))
|
||||
if pkt.Message.Head.GetFromUin() == c.Uin {
|
||||
c.dispatchGroupMessageSelf(c.parseGroupMessage(pkt.Message))
|
||||
} else {
|
||||
c.dispatchGroupMessage(c.parseGroupMessage(pkt.Message))
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user