feat: 添加关键词回复
This commit is contained in:
@@ -9,7 +9,8 @@ import (
|
||||
"git.lxtend.com/qqbot/model"
|
||||
)
|
||||
|
||||
var handlers = make(map[string]model.HandlerInfo[model.Handler])
|
||||
var allGroupHandlers = make(map[string]model.HandlerInfo[model.Handler])
|
||||
var GroupHandlers = make(map[int64]map[string]model.HandlerInfo[model.Handler])
|
||||
var frontMatchHandlers = make(map[string]model.HandlerInfo[model.Handler])
|
||||
var liveHandlers = make(map[int64]map[int64]model.TryCatchHandler)
|
||||
var livePrivateHandlers = make(map[int64]model.TryCatchHandler)
|
||||
@@ -21,7 +22,7 @@ func RegisterPrivateHandler(handler model.Handler) {
|
||||
}
|
||||
|
||||
func RegisterHandler(trigger string, handler model.Handler, level constants.PermissionLevel) {
|
||||
handlers[trigger] = model.HandlerInfo[model.Handler]{
|
||||
allGroupHandlers[trigger] = model.HandlerInfo[model.Handler]{
|
||||
Trigger: trigger,
|
||||
Handler: handler,
|
||||
Level: level,
|
||||
@@ -47,6 +48,23 @@ func RegisterLiveHandler(groupID int64, userID int64, handler model.TryCatchHand
|
||||
liveHandlers[groupID][userID] = handler
|
||||
}
|
||||
|
||||
func RegisterGroupHandler(groupID int64, trigger string, handler model.Handler, level constants.PermissionLevel) {
|
||||
if _, ok := GroupHandlers[groupID]; !ok {
|
||||
GroupHandlers[groupID] = make(map[string]model.HandlerInfo[model.Handler])
|
||||
}
|
||||
GroupHandlers[groupID][trigger] = model.HandlerInfo[model.Handler]{
|
||||
Trigger: trigger,
|
||||
Handler: handler,
|
||||
Level: level,
|
||||
}
|
||||
}
|
||||
|
||||
func UnRegisterGroupHandler(groupID int64, trigger string) {
|
||||
if _, ok := GroupHandlers[groupID]; ok {
|
||||
delete(GroupHandlers[groupID], trigger)
|
||||
}
|
||||
}
|
||||
|
||||
func MsgInHandler(msg model.Message) (reply model.Reply) {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
@@ -85,9 +103,14 @@ func MsgInHandler(msg model.Message) (reply model.Reply) {
|
||||
}
|
||||
}
|
||||
msgArray := strings.Split(msg.RawMsg, " ")
|
||||
if handler, ok := handlers[msgArray[0]]; ok {
|
||||
if handler, ok := allGroupHandlers[msgArray[0]]; ok {
|
||||
return auth.TryExecHandler(msg, handler.Level, handler.Handler)
|
||||
}
|
||||
if groupHandler, ok := GroupHandlers[msg.GroupInfo.GroupId]; ok {
|
||||
if handler, ok := groupHandler[msgArray[0]]; ok {
|
||||
return auth.TryExecHandler(msg, handler.Level, handler.Handler)
|
||||
}
|
||||
}
|
||||
if !msg.GroupInfo.IsGroupMsg && privateAllHandler != nil {
|
||||
return privateAllHandler(msg)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user