refactor: 重构消息发送模型

This commit is contained in:
lixiangwuxian
2024-10-28 02:58:08 +08:00
parent fe863a9ac8
commit 7e28953a56
10 changed files with 196 additions and 16 deletions

View File

@@ -0,0 +1,32 @@
package drawback
import (
"log"
"git.lxtend.com/qqbot/action"
"git.lxtend.com/qqbot/constants"
"git.lxtend.com/qqbot/handler"
"git.lxtend.com/qqbot/model"
)
func init() {
handler.RegisterRegexHandler(`撤回`, drawback, constants.LEVEL_USER)
}
func drawback(msg model.Message) model.Reply {
msgIdToDrawback, err := model.ParseReplyData(msg.RawMsg)
log.Printf("Drawback message %d", msgIdToDrawback.Data.ID)
if err != nil {
return model.Reply{
ReplyMsg: "",
ReferOriginMsg: false,
FromMsg: msg,
}
}
action.ActionManager.DrawbackMsg(int32(msgIdToDrawback.Data.ID))
return model.Reply{
ReplyMsg: "",
ReferOriginMsg: false,
FromMsg: msg,
}
}

View File

@@ -2,6 +2,7 @@ package handler
import (
"log"
"regexp"
"strings"
"git.lxtend.com/qqbot/auth"
@@ -12,6 +13,7 @@ import (
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 regexHandlers = make(map[string]model.HandlerInfo[model.Handler])
var liveHandlers = make(map[int64]map[int64]model.TryCatchHandler)
var livePrivateHandlers = make(map[int64]model.TryCatchHandler)
var HelpInforms = make(map[string]string)
@@ -65,6 +67,14 @@ func UnRegisterGroupHandler(groupID int64, trigger string) {
}
}
func RegisterRegexHandler(trigger string, handler model.Handler, level constants.PermissionLevel) {
regexHandlers[trigger] = model.HandlerInfo[model.Handler]{
Trigger: trigger,
Handler: handler,
Level: level,
}
}
func MsgInHandler(msg model.Message) (reply model.Reply) {
defer func() {
if r := recover(); r != nil {
@@ -111,6 +121,12 @@ func MsgInHandler(msg model.Message) (reply model.Reply) {
return auth.TryExecHandler(msg, handler.Level, handler.Handler)
}
}
for trigger, handler := range regexHandlers {
exp := regexp.MustCompile(trigger)
if exp.MatchString(msg.RawMsg) {
return auth.TryExecHandler(msg, handler.Level, handler.Handler)
}
}
if !msg.GroupInfo.IsGroupMsg && privateAllHandler != nil {
return privateAllHandler(msg)
}

View File

@@ -20,6 +20,7 @@ func init() {
handler.RegisterHandler("/构建bot", build, constants.LEVEL_ADMIN)
handler.RegisterHandler("/构建重启", buildAndRestart, constants.LEVEL_ADMIN)
handler.RegisterHandler("/gitpull", pullCode, constants.LEVEL_ADMIN)
handler.RegisterHandler("/shutdown", shutdown, constants.LEVEL_ADMIN)
}
func restart(msg model.Message) model.Reply {
@@ -38,6 +39,15 @@ func restart(msg model.Message) model.Reply {
}
}
func shutdown(msg model.Message) model.Reply {
go shutdownProgram()
return model.Reply{
ReplyMsg: "关闭中...",
ReferOriginMsg: true,
FromMsg: msg,
}
}
func build(msg model.Message) model.Reply {
err := buildBot()
if err != nil {
@@ -117,6 +127,14 @@ func restartProgram() error {
return nil
}
func shutdownProgram() error {
log.Println("关闭程序...")
docker.DockerContainer.RemoveContainer()
time.Sleep(500 * time.Millisecond)
os.Exit(0)
return nil
}
func buildBot() error {
hasVaildBuild = false
workDir, err := os.Getwd()