feat: 添加帮助功能
This commit is contained in:
@@ -8,10 +8,13 @@ import (
|
||||
)
|
||||
|
||||
type Handler func(msg model.Message) (reply model.Reply)
|
||||
type TryCatchHandler func(msg model.Message) (reply model.Reply, catched bool)
|
||||
|
||||
var handlers = make(map[string]Handler)
|
||||
var frontMatchHandlers = make(map[string]Handler)
|
||||
var liveHandlers = make(map[int64]map[int64]Handler)
|
||||
var liveHandlers = make(map[int64]map[int64]TryCatchHandler)
|
||||
var livePrivateHandlers = make(map[int64]TryCatchHandler)
|
||||
var HelpInforms = make(map[string]string)
|
||||
var privateAllHandler Handler
|
||||
|
||||
func RegisterPrivateHandler(handler Handler) {
|
||||
@@ -26,9 +29,13 @@ func RegisterFrontMatchHandler(trigger string, handler Handler) {
|
||||
frontMatchHandlers[trigger] = handler
|
||||
}
|
||||
|
||||
func RegisterLiveHandler(groupID int64, userID int64, handler Handler) { //userID=-1 means for all users in groupID
|
||||
func RegisterLiveHandler(groupID int64, userID int64, handler TryCatchHandler) { //userID=-1 means for all users in groupID
|
||||
if groupID == 0 {
|
||||
livePrivateHandlers[userID] = handler
|
||||
return
|
||||
}
|
||||
if _, ok := liveHandlers[groupID]; !ok {
|
||||
liveHandlers[groupID] = make(map[int64]Handler)
|
||||
liveHandlers[groupID] = make(map[int64]TryCatchHandler)
|
||||
}
|
||||
liveHandlers[groupID][userID] = handler
|
||||
}
|
||||
@@ -51,8 +58,18 @@ func MsgInHandler(msg model.Message) (reply model.Reply) {
|
||||
}()
|
||||
if handlerUserID, ok := liveHandlers[msg.GroupInfo.GroupId]; ok {
|
||||
if handler, ok := handlerUserID[msg.UserId]; ok {
|
||||
liveHandlers[msg.GroupInfo.GroupId][msg.UserId] = nil
|
||||
return handler(msg)
|
||||
defer func() { liveHandlers[msg.GroupInfo.GroupId][msg.UserId] = nil }()
|
||||
reply, catched := handler(msg)
|
||||
if catched {
|
||||
return reply
|
||||
}
|
||||
}
|
||||
}
|
||||
if handler, ok := livePrivateHandlers[msg.UserId]; ok {
|
||||
defer func() { livePrivateHandlers[msg.UserId] = nil }()
|
||||
reply, catched := handler(msg)
|
||||
if catched {
|
||||
return reply
|
||||
}
|
||||
}
|
||||
for trigger, handler := range frontMatchHandlers {
|
||||
@@ -69,3 +86,7 @@ func MsgInHandler(msg model.Message) (reply model.Reply) {
|
||||
}
|
||||
return model.Reply{}
|
||||
}
|
||||
|
||||
func RegisterHelpInform(triggerName string, inform string) {
|
||||
HelpInforms[triggerName] = inform
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user