1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 19:17:38 +08:00
MiraiGo/client/events.go
2020-07-06 03:56:25 +08:00

58 lines
1.3 KiB
Go

package client
import "github.com/Mrs4s/MiraiGo/message"
func (c *QQClient) OnPrivateMessage(f func(*QQClient, *message.PrivateMessage)) {
c.privateMessageHandlers = append(c.privateMessageHandlers, f)
}
func (c *QQClient) OnPrivateMessageF(filter func(*message.PrivateMessage) bool, f func(*QQClient, *message.PrivateMessage)) {
c.privateMessageHandlers = append(c.privateMessageHandlers, func(client *QQClient, msg *message.PrivateMessage) {
if filter(msg) {
f(client, msg)
}
})
}
func (c *QQClient) OnGroupMessage(f func(*QQClient, *message.GroupMessage)) {
c.groupMessageHandlers = append(c.groupMessageHandlers, f)
}
func NewUinFilterPrivate(uin int64) func(*message.PrivateMessage) bool {
return func(msg *message.PrivateMessage) bool {
return msg.Sender.Uin == uin
}
}
func (c *QQClient) dispatchFriendMessage(msg *message.PrivateMessage) {
if msg == nil {
return
}
for _, f := range c.privateMessageHandlers {
func() {
defer func() {
if pan := recover(); pan != nil {
//
}
}()
f(c, msg)
}()
}
}
func (c *QQClient) dispatchGroupMessage(msg *message.GroupMessage) {
if msg == nil {
return
}
for _, f := range c.groupMessageHandlers {
func() {
defer func() {
if pan := recover(); pan != nil {
// TODO: logger
}
}()
f(c, msg)
}()
}
}