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)
|
privateMessageHandlers []func(*QQClient, *message.PrivateMessage)
|
||||||
tempMessageHandlers []func(*QQClient, *message.TempMessage)
|
tempMessageHandlers []func(*QQClient, *message.TempMessage)
|
||||||
groupMessageHandlers []func(*QQClient, *message.GroupMessage)
|
groupMessageHandlers []func(*QQClient, *message.GroupMessage)
|
||||||
|
selfGroupMessageHandlers []func(*QQClient, *message.GroupMessage)
|
||||||
groupMuteEventHandlers []func(*QQClient, *GroupMuteEvent)
|
groupMuteEventHandlers []func(*QQClient, *GroupMuteEvent)
|
||||||
groupRecalledHandlers []func(*QQClient, *GroupMessageRecalledEvent)
|
groupRecalledHandlers []func(*QQClient, *GroupMessageRecalledEvent)
|
||||||
friendRecalledHandlers []func(*QQClient, *FriendMessageRecalledEvent)
|
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)
|
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)) {
|
func (c *QQClient) OnGroupMuted(f func(*QQClient, *GroupMuteEvent)) {
|
||||||
c.eventHandlers.groupMuteEventHandlers = append(c.eventHandlers.groupMuteEventHandlers, f)
|
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) {
|
func (c *QQClient) dispatchGroupMuteEvent(e *GroupMuteEvent) {
|
||||||
if e == nil {
|
if e == nil {
|
||||||
return
|
return
|
||||||
|
@ -316,7 +316,6 @@ func decodeGroupMessagePacket(c *QQClient, _ uint16, payload []byte) (interface{
|
|||||||
Seq: pkt.Message.Head.GetMsgSeq(),
|
Seq: pkt.Message.Head.GetMsgSeq(),
|
||||||
Msg: c.parseGroupMessage(pkt.Message),
|
Msg: c.parseGroupMessage(pkt.Message),
|
||||||
})
|
})
|
||||||
return nil, nil
|
|
||||||
}
|
}
|
||||||
if pkt.Message.Content != nil && pkt.Message.Content.GetPkgNum() > 1 {
|
if pkt.Message.Content != nil && pkt.Message.Content.GetPkgNum() > 1 {
|
||||||
var builder *groupMessageBuilder
|
var builder *groupMessageBuilder
|
||||||
@ -330,11 +329,19 @@ func decodeGroupMessagePacket(c *QQClient, _ uint16, payload []byte) (interface{
|
|||||||
builder.MessageSlices = append(builder.MessageSlices, pkt.Message)
|
builder.MessageSlices = append(builder.MessageSlices, pkt.Message)
|
||||||
if int32(len(builder.MessageSlices)) >= pkt.Message.Content.GetPkgNum() {
|
if int32(len(builder.MessageSlices)) >= pkt.Message.Content.GetPkgNum() {
|
||||||
c.groupMsgBuilders.Delete(pkt.Message.Content.GetDivSeq())
|
c.groupMsgBuilders.Delete(pkt.Message.Content.GetDivSeq())
|
||||||
|
if pkt.Message.Head.GetFromUin() == c.Uin {
|
||||||
|
c.dispatchGroupMessageSelf(c.parseGroupMessage(builder.build()))
|
||||||
|
} else {
|
||||||
c.dispatchGroupMessage(c.parseGroupMessage(builder.build()))
|
c.dispatchGroupMessage(c.parseGroupMessage(builder.build()))
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
if pkt.Message.Head.GetFromUin() == c.Uin {
|
||||||
|
c.dispatchGroupMessageSelf(c.parseGroupMessage(pkt.Message))
|
||||||
|
} else {
|
||||||
c.dispatchGroupMessage(c.parseGroupMessage(pkt.Message))
|
c.dispatchGroupMessage(c.parseGroupMessage(pkt.Message))
|
||||||
|
}
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user