mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 11:07:40 +08:00
58 lines
1.3 KiB
Go
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)
|
|
}()
|
|
}
|
|
}
|