refactor: 重构消息发送模型
This commit is contained in:
32
handler/drawback/drawback.go
Normal file
32
handler/drawback/drawback.go
Normal 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,
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user