feat: 添加帮助功能

This commit is contained in:
lixiangwuxian
2024-10-15 23:07:49 +08:00
parent ea3ef541e2
commit 48891fbd0a
12 changed files with 217 additions and 33 deletions

View File

@@ -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
}