test
Signed-off-by: NothAmor <nothamor@localhost.localdomain>
This commit is contained in:
parent
86b00d054a
commit
cf6cc88132
164
config/config.go
Normal file
164
config/config.go
Normal file
@ -0,0 +1,164 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/eatmoreapple/openwechat"
|
||||
)
|
||||
|
||||
|
||||
// RegisterHandler 注册消息处理函数, 根据自己的需求自定义
|
||||
// matchFunc返回true则表示处理对应的handlers
|
||||
func (m *MessageMatchDispatcher) RegisterHandler(matchFunc MatchFunc, handlers ...MessageContextHandler) {
|
||||
if matchFunc == nil {
|
||||
panic("MatchFunc can not be nil")
|
||||
}
|
||||
node := &matchNode{matchFunc: matchFunc, group: handlers}
|
||||
m.matchNodes = append(m.matchNodes, node)
|
||||
}
|
||||
|
||||
// OnText 注册处理消息类型为Text的处理函数
|
||||
func (m *MessageMatchDispatcher) OnText(handlers ...MessageContextHandler) {
|
||||
m.RegisterHandler(func(message *Message) bool { return message.IsText() }, handlers...)
|
||||
}
|
||||
|
||||
// OnImage 注册处理消息类型为Image的处理函数
|
||||
func (m *MessageMatchDispatcher) OnImage(handlers ...MessageContextHandler) {
|
||||
m.RegisterHandler(func(message *Message) bool { return message.IsPicture() }, handlers...)
|
||||
}
|
||||
|
||||
// OnEmoticon 注册处理消息类型为Emoticon的处理函数(表情包)
|
||||
func (m *MessageMatchDispatcher) OnEmoticon(handlers ...MessageContextHandler) {
|
||||
m.RegisterHandler(func(message *Message) bool { return message.IsEmoticon() }, handlers...)
|
||||
}
|
||||
|
||||
// OnVoice 注册处理消息类型为Voice的处理函数
|
||||
func (m *MessageMatchDispatcher) OnVoice(handlers ...MessageContextHandler) {
|
||||
m.RegisterHandler(func(message *Message) bool { return message.IsVoice() }, handlers...)
|
||||
}
|
||||
|
||||
// OnFriendAdd 注册处理消息类型为FriendAdd的处理函数
|
||||
func (m *MessageMatchDispatcher) OnFriendAdd(handlers ...MessageContextHandler) {
|
||||
m.RegisterHandler(func(message *Message) bool { return message.IsFriendAdd() }, handlers...)
|
||||
}
|
||||
|
||||
// OnCard 注册处理消息类型为Card的处理函数
|
||||
func (m *MessageMatchDispatcher) OnCard(handlers ...MessageContextHandler) {
|
||||
m.RegisterHandler(func(message *Message) bool { return message.IsCard() }, handlers...)
|
||||
}
|
||||
|
||||
// OnMedia 注册处理消息类型为Media(多媒体消息,包括但不限于APP分享、文件分享)的处理函数
|
||||
func (m *MessageMatchDispatcher) OnMedia(handlers ...MessageContextHandler) {
|
||||
m.RegisterHandler(func(message *Message) bool { return message.IsMedia() }, handlers...)
|
||||
}
|
||||
|
||||
// OnFriendByNickName 注册根据好友昵称是否匹配的消息处理函数
|
||||
func (m *MessageMatchDispatcher) OnFriendByNickName(nickName string, handlers ...MessageContextHandler) {
|
||||
matchFunc := func(message *Message) bool {
|
||||
if message.IsSendByFriend() {
|
||||
sender, err := message.Sender()
|
||||
return err == nil && sender.NickName == nickName
|
||||
}
|
||||
return false
|
||||
}
|
||||
m.RegisterHandler(matchFunc, handlers...)
|
||||
}
|
||||
|
||||
// OnFriend 注册发送者为好友的处理函数
|
||||
func (m *MessageMatchDispatcher) OnFriend(handlers ...MessageContextHandler) {
|
||||
m.RegisterHandler(func(message *Message) bool { return message.IsSendByFriend() }, handlers...)
|
||||
}
|
||||
|
||||
// OnGroup 注册发送者为群组的处理函数
|
||||
func (m *MessageMatchDispatcher) OnGroup(handlers ...MessageContextHandler) {
|
||||
m.RegisterHandler(func(message *Message) bool { return message.IsSendByGroup() }, handlers...)
|
||||
}
|
||||
|
||||
// OnUser 注册根据消息发送者的行为是否匹配的消息处理函数
|
||||
func (m *MessageMatchDispatcher) OnUser(f func(user *User) bool, handlers ...MessageContextHandler) {
|
||||
mf := func(message *Message) bool {
|
||||
sender, err := message.Sender()
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
return f(sender)
|
||||
}
|
||||
m.RegisterHandler(mf, handlers...)
|
||||
}
|
||||
|
||||
// OnFriendByRemarkName 注册根据好友备注是否匹配的消息处理函数
|
||||
func (m *MessageMatchDispatcher) OnFriendByRemarkName(remarkName string, handlers ...MessageContextHandler) {
|
||||
f := func(user *User) bool {
|
||||
return user.IsFriend() && user.RemarkName == remarkName
|
||||
}
|
||||
m.OnUser(f, handlers...)
|
||||
}
|
||||
|
||||
// OnGroupByGroupName 注册根据群名是否匹配的消息处理函数
|
||||
func (m *MessageMatchDispatcher) OnGroupByGroupName(groupName string, handlers ...MessageContextHandler) {
|
||||
f := func(user *User) bool {
|
||||
return user.IsGroup() && user.NickName == groupName
|
||||
}
|
||||
m.OnUser(f, handlers...)
|
||||
}
|
||||
|
||||
// SetAsync 设置是否异步处理
|
||||
func (m *MessageMatchDispatcher) SetAsync(async bool) {
|
||||
m.async = async
|
||||
}
|
||||
|
||||
|
||||
// Dispatch impl MessageDispatcher
|
||||
// 遍历 MessageMatchDispatcher 所有的消息处理函数
|
||||
// 获取所有匹配上的函数
|
||||
// 执行处理的消息处理方法
|
||||
func (m *MessageMatchDispatcher) Dispatch(msg *Message) {
|
||||
var group MessageContextHandlerGroup
|
||||
for _, node := range m.matchNodes {
|
||||
if node.matchFunc(msg) {
|
||||
group = append(group, node.group...)
|
||||
}
|
||||
}
|
||||
ctx := &MessageContext{Message: msg, messageHandlers: group}
|
||||
if m.async {
|
||||
go m.do(ctx)
|
||||
} else {
|
||||
m.do(ctx)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// SenderFriendRequired 只匹配好友
|
||||
func SenderFriendRequired() MatchFunc {
|
||||
return SenderMatchFunc(func(user *User) bool { return user.IsFriend() })
|
||||
}
|
||||
|
||||
// SenderGroupRequired 只匹配群组
|
||||
func SenderGroupRequired() MatchFunc {
|
||||
return SenderMatchFunc(func(user *User) bool { return user.IsGroup() })
|
||||
}
|
||||
|
||||
// SenderMpRequired 只匹配公众号
|
||||
func SenderMpRequired() MatchFunc {
|
||||
return SenderMatchFunc(func(user *User) bool { return user.IsMP() })
|
||||
}
|
||||
|
||||
// SenderNickNameEqualMatchFunc 根据用户昵称是否等于指定字符串的匹配函数
|
||||
func SenderNickNameEqualMatchFunc(nickname string) MatchFunc {
|
||||
return SenderMatchFunc(func(user *User) bool { return user.NickName == nickname })
|
||||
}
|
||||
|
||||
// SenderRemarkNameEqualMatchFunc 根据用户备注是否等于指定字符串的匹配函数
|
||||
func SenderRemarkNameEqualMatchFunc(remarkName string) MatchFunc {
|
||||
return SenderMatchFunc(func(user *User) bool { return user.RemarkName == remarkName })
|
||||
}
|
||||
|
||||
// SenderNickNameContainsMatchFunc 根据用户昵称是否包含指定字符串的匹配函数
|
||||
func SenderNickNameContainsMatchFunc(nickname string) MatchFunc {
|
||||
return SenderMatchFunc(func(user *User) bool { return strings.Contains(user.NickName, nickname) })
|
||||
}
|
||||
|
||||
// SenderRemakeNameContainsFunc 根据用户备注名是否包含指定字符串的匹配函数
|
||||
func SenderRemakeNameContainsFunc(remakeName string) MatchFunc {
|
||||
return SenderMatchFunc(func(user *User) bool { return strings.Contains(user.RemarkName, remakeName) })
|
||||
}
|
||||
|
10
main.go
10
main.go
@ -6,13 +6,15 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
bot := openwechat.DefaultBot()
|
||||
// bot := openwechat.DefaultBot(openwechat.Desktop) // 桌面模式,上面登录不上的可以尝试切换这种模式
|
||||
bot := openwechat.DefaultBot(openwechat.Desktop)
|
||||
|
||||
// 注册消息处理函数
|
||||
bot.MessageHandler = func(msg *openwechat.Message) {
|
||||
if msg.IsText() && msg.Content == "ping" {
|
||||
msg.ReplyText("pong")
|
||||
|
||||
|
||||
if msg.IsText() && msg.Content == "专升本英语" {
|
||||
msg.ReplyText("success")
|
||||
|
||||
}
|
||||
}
|
||||
// 注册登陆二维码回调
|
||||
|
10
module/english.go
Normal file
10
module/english.go
Normal file
@ -0,0 +1,10 @@
|
||||
package english
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/eatmoreapple/openwechat"
|
||||
)
|
||||
|
||||
func English(string ){
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user