From e6fcd53bd4b1d61d8e5f414f7c7de0fff86a4adf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=9A=E5=90=83=E7=82=B9=E8=8B=B9=E6=9E=9C?= <73388495+eatmoreapple@users.noreply.github.com> Date: Mon, 12 Dec 2022 19:38:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=20MessageMatchDispatcher=20?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E8=BD=AC=E6=8D=A2=E6=88=90=20MessageHandler?= =?UTF-8?q?=20:sparkles:=20(#161)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- message_handle.go | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/message_handle.go b/message_handle.go index e77ecbf..0652671 100644 --- a/message_handle.go +++ b/message_handle.go @@ -12,6 +12,7 @@ type MessageDispatcher interface { } // DispatchMessage 跟 MessageDispatcher 结合封装成 MessageHandler +// Deprecated: use MessageMatchDispatcher.AsMessageHandler instead func DispatchMessage(dispatcher MessageDispatcher) func(msg *Message) { return func(msg *Message) { dispatcher.Dispatch(msg) } } @@ -85,12 +86,13 @@ type matchNode struct { type matchNodes []*matchNode // MessageMatchDispatcher impl MessageDispatcher interface -// dispatcher := NewMessageMatchDispatcher() -// dispatcher.OnText(func(msg *Message){ -// msg.ReplyText("hello") -// }) -// bot := DefaultBot() -// bot.MessageHandler = DispatchMessage(dispatcher) +// +// dispatcher := NewMessageMatchDispatcher() +// dispatcher.OnText(func(msg *Message){ +// msg.ReplyText("hello") +// }) +// bot := DefaultBot() +// bot.MessageHandler = DispatchMessage(dispatcher) type MessageMatchDispatcher struct { async bool matchNodes matchNodes @@ -224,14 +226,22 @@ func (m *MessageMatchDispatcher) OnGroupByGroupName(groupName string, handlers . m.OnUser(f, handlers...) } +// AsMessageHandler 将MessageMatchDispatcher转换为MessageHandler +func (m *MessageMatchDispatcher) AsMessageHandler() MessageHandler { + return func(msg *Message) { + m.Dispatch(msg) + } +} + type MessageSenderMatchFunc func(user *User) bool // SenderMatchFunc 抽象的匹配发送者特征的处理函数 -// dispatcher := NewMessageMatchDispatcher() -// matchFuncList := MatchFuncList(SenderFriendRequired(), SenderNickNameContainsMatchFunc("多吃点苹果")) -// dispatcher.RegisterHandler(matchFuncList, func(ctx *MessageContext) { -// do your own business -// }) +// +// dispatcher := NewMessageMatchDispatcher() +// matchFuncList := MatchFuncList(SenderFriendRequired(), SenderNickNameContainsMatchFunc("多吃点苹果")) +// dispatcher.RegisterHandler(matchFuncList, func(ctx *MessageContext) { +// do your own business +// }) func SenderMatchFunc(matchFuncs ...MessageSenderMatchFunc) MatchFunc { return func(message *Message) bool { sender, err := message.Sender()