fix: 修改多个处理函数的返回类型为指针类型,以提高内存使用效率并避免不必要的拷贝

This commit is contained in:
lixiangwuxian 2025-04-09 23:28:39 +08:00
parent 144034939c
commit 7f0560b56e
32 changed files with 211 additions and 210 deletions

View File

@ -33,7 +33,7 @@ func (am *actionManager) SendAction(action string) error {
return am.botConn.WriteMessage(websocket.TextMessage, []byte(action))
}
func (am *actionManager) SendMsg(reply model.Reply) error {
func (am *actionManager) SendMsg(reply *model.Reply) error {
am.sendMtx.Lock()
defer am.sendMtx.Unlock()
if reply.ReferOriginMsg {

View File

@ -39,20 +39,16 @@ func SetPermission(qqID int64, level constants.PermissionLevel) error {
return setAuth(auth)
}
func TryExecHandler(msg model.Message, level constants.PermissionLevel, handler model.Handler) (reply model.Reply) {
func TryExecHandler(msg model.Message, level constants.PermissionLevel, handler model.Handler) (reply *model.Reply) {
if permission, err := getAuth(msg.UserId); err == nil {
if permission.Role == constants.LEVEL_IGNORE {
return model.Reply{
ReplyMsg: "",
ReferOriginMsg: false,
FromMsg: msg,
}
return nil
}
}
if HasPermission(msg.UserId, level) {
return handler(msg)
}
return model.Reply{
return &model.Reply{
ReplyMsg: "权限校验错误",
ReferOriginMsg: true,
FromMsg: msg,

View File

@ -26,11 +26,11 @@ var userLevelMap = map[string]constants.PermissionLevel{
"忽略": constants.LEVEL_IGNORE,
}
func setUserLevel(msg model.Message) (reply model.Reply) {
func setUserLevel(msg model.Message) (reply *model.Reply) {
re := regexp.MustCompile(`\s+`)
tokens := re.Split(msg.RawMsg, -1)
if len(tokens) < 3 {
return model.Reply{
return &model.Reply{
ReplyMsg: "参数不足",
ReferOriginMsg: true,
FromMsg: msg,
@ -44,7 +44,7 @@ func setUserLevel(msg model.Message) (reply model.Reply) {
log.Println(userText)
user, err := strconv.Atoi(userText)
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "用户解析失败",
ReferOriginMsg: true,
FromMsg: msg,
@ -53,20 +53,20 @@ func setUserLevel(msg model.Message) (reply model.Reply) {
levelText := tokens[2]
level, ok := userLevelMap[levelText]
if !ok {
return model.Reply{
return &model.Reply{
ReplyMsg: "权限不存在",
ReferOriginMsg: true,
FromMsg: msg,
}
}
if err := auth.SetPermission(int64(user), level); err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "权限设置失败",
ReferOriginMsg: true,
FromMsg: msg,
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: "权限设置成功",
ReferOriginMsg: true,
FromMsg: msg,

View File

@ -30,7 +30,7 @@ func init() {
handler.RegisterHandler("jbl", screenShotBL, constants.LEVEL_USER)
}
func getMyBL(msg model.Message) (reply model.Reply) {
func getMyBL(msg model.Message) (reply *model.Reply) {
var (
resultStr string
err error
@ -53,43 +53,43 @@ func getMyBL(msg model.Message) (reply model.Reply) {
resultStr = "获取您的分数时出现问题,请稍后重试。"
}
return model.Reply{
return &model.Reply{
ReplyMsg: resultStr,
ReferOriginMsg: true,
FromMsg: msg,
}
}
func bindBL(msg model.Message) (reply model.Reply) {
func bindBL(msg model.Message) (reply *model.Reply) {
if len(msg.RawMsg) <= len("绑定bl ") {
return model.Reply{
return &model.Reply{
ReplyMsg: "请输入绑定的beatleader账号",
ReferOriginMsg: true,
FromMsg: msg,
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: beatleader.BLQuery.BindBL(strconv.Itoa(int(msg.UserId)), msg.RawMsg[len("绑定bl "):]),
ReferOriginMsg: true,
FromMsg: msg,
}
}
func unbindBL(msg model.Message) (reply model.Reply) {
return model.Reply{
func unbindBL(msg model.Message) (reply *model.Reply) {
return &model.Reply{
ReplyMsg: beatleader.BLQuery.UnbindBL(strconv.Itoa(int(msg.UserId))),
ReferOriginMsg: true,
FromMsg: msg,
}
}
func getMyRecentScore(msg model.Message) (reply model.Reply) {
func getMyRecentScore(msg model.Message) (reply *model.Reply) {
count := 1
scoreMsg := ""
if len(msg.RawMsg) > len("最新bl ") {
var err error
count, err = strconv.Atoi(msg.RawMsg[len("最新bl "):])
if err != nil || count <= 0 {
return model.Reply{
return &model.Reply{
ReplyMsg: "",
ReferOriginMsg: true,
FromMsg: msg,
@ -103,7 +103,7 @@ func getMyRecentScore(msg model.Message) (reply model.Reply) {
recordCount := 0
records, err := beatleader.BLQuery.GetRecentScores(count, strconv.Itoa(int(msg.UserId)))
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: err.Error(),
ReferOriginMsg: true,
FromMsg: msg,
@ -145,27 +145,27 @@ func getMyRecentScore(msg model.Message) (reply model.Reply) {
if len(scoreMsg) > 0 {
scoreMsg = scoreMsg[:len(scoreMsg)-len("\n")] //去掉最后一个换行符
} else {
return model.Reply{
return &model.Reply{
ReplyMsg: "无最近游戏记录",
ReferOriginMsg: true,
FromMsg: msg,
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: "玩家 " + userName + " 的" + strconv.Itoa(recordCount) + "条最近记录为:\n" + scoreMsg,
ReferOriginMsg: true,
FromMsg: msg,
}
}
func screenShotBL(msg model.Message) (reply model.Reply) {
func screenShotBL(msg model.Message) (reply *model.Reply) {
imageMsg := message.ImageMessage{
Type: "image",
Data: message.ImageMessageData{
File: "file:///tmp/qqbot/" + beatleader.GetBLPicture(strconv.Itoa(int(msg.UserId))),
},
}
return model.Reply{
return &model.Reply{
ReplyMsg: imageMsg.ToCQString(),
ReferOriginMsg: true,
FromMsg: msg,

View File

@ -18,10 +18,10 @@ func init() {
userGameMap = make(map[string]*core.BackJackGame)
}
func blackJack(msg model.Message) model.Reply {
func blackJack(msg model.Message) *model.Reply {
tokens := util.SplitN(msg.RawMsg, 2)
if len(tokens) < 2 {
return model.Reply{
return &model.Reply{
ReplyMsg: "Invalid command",
ReferOriginMsg: true,
FromMsg: msg,
@ -30,7 +30,7 @@ func blackJack(msg model.Message) model.Reply {
if tokens[1] == "exit" {
delete(userGameMap, util.From(msg.GroupInfo.GroupId, msg.UserId))
return model.Reply{
return &model.Reply{
ReplyMsg: "Bye",
ReferOriginMsg: false,
FromMsg: msg,
@ -41,7 +41,7 @@ func blackJack(msg model.Message) model.Reply {
userGameMap[util.From(msg.GroupInfo.GroupId, msg.UserId)] = core.NewBlackJackGame(controller.NewBlackJackSimulator(), view.NewLiteralViewer(controller.NewBlackJackSimulator()))
}
if _, ok := userGameMap[util.From(msg.GroupInfo.GroupId, msg.UserId)]; !ok {
return model.Reply{
return &model.Reply{
ReplyMsg: "Please start a game first",
ReferOriginMsg: true,
FromMsg: msg,
@ -52,18 +52,18 @@ func blackJack(msg model.Message) model.Reply {
if response[len(response)-1:] == "\n" {
response = response[:len(response)-1]
}
return model.Reply{
return &model.Reply{
ReplyMsg: response,
ReferOriginMsg: false,
FromMsg: msg,
}
}
func blackJackWithNoBj(msg model.Message) (model.Reply, bool) {
func blackJackWithNoBj(msg model.Message) (reply *model.Reply, ok bool) {
if msg.RawMsg == "exit" {
delete(userGameMap, util.From(msg.GroupInfo.GroupId, msg.UserId))
handler.UnRegisterLiveHandler(msg.GroupInfo.GroupId, msg.UserId)
return model.Reply{
return &model.Reply{
ReplyMsg: "Bye",
ReferOriginMsg: false,
FromMsg: msg,
@ -75,7 +75,7 @@ func blackJackWithNoBj(msg model.Message) (model.Reply, bool) {
}
if _, ok := userGameMap[util.From(msg.GroupInfo.GroupId, msg.UserId)]; !ok {
return model.Reply{
return &model.Reply{
ReplyMsg: "Please start a game first",
ReferOriginMsg: true,
FromMsg: msg,
@ -84,7 +84,7 @@ func blackJackWithNoBj(msg model.Message) (model.Reply, bool) {
response, err := userGameMap[util.From(msg.GroupInfo.GroupId, msg.UserId)].AddCommand(msg.RawMsg)
if err != nil {
if err.Error() == "invalid command" {
return model.Reply{
return &model.Reply{
ReplyMsg: "",
ReferOriginMsg: false,
FromMsg: msg,
@ -97,7 +97,7 @@ func blackJackWithNoBj(msg model.Message) (model.Reply, bool) {
if len(response) > 1 && response[len(response)-1:] == "\n" {
response = response[:len(response)-1]
}
return model.Reply{
return &model.Reply{
ReplyMsg: response,
ReferOriginMsg: false,
FromMsg: msg,

View File

@ -13,17 +13,17 @@ func init() {
handler.RegisterHelpInform("撤回", "drawback", "发送 <引用消息>撤回 撤回消息")
}
func drawback(msg model.Message) model.Reply {
func drawback(msg model.Message) *model.Reply {
msgIdToDrawback := message.ReplyMessage{}
if err := msgIdToDrawback.ParseMessage(msg.RawMsg); err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "",
ReferOriginMsg: false,
FromMsg: msg,
}
}
action.ActionManager.DrawbackMsg(int32(msgIdToDrawback.Data.ID))
return model.Reply{
return &model.Reply{
ReplyMsg: "",
ReferOriginMsg: false,
FromMsg: msg,

View File

@ -11,11 +11,11 @@ func init() {
handler.RegisterHelpInform("echo", "echo", "echo <message> 再说一遍")
}
func echo(msg model.Message) (reply model.Reply) {
func echo(msg model.Message) (reply *model.Reply) {
if len(msg.RawMsg) <= 5 {
return model.Reply{}
return &model.Reply{}
}
return model.Reply{
return &model.Reply{
ReplyMsg: msg.RawMsg[5:],
ReferOriginMsg: true,
FromMsg: msg,

View File

@ -18,7 +18,7 @@ func init() {
handler.RegisterHelpInform("reboot", "docker", "reboot 重启环境")
}
func runInDocker(msg model.Message) (reply model.Reply) {
func runInDocker(msg model.Message) (reply *model.Reply) {
token := util.SplitN(msg.RawMsg, 2)
if len(token) < 2 {
reply.ReplyMsg = "Usage: exec <command>"
@ -47,7 +47,7 @@ func runInDocker(msg model.Message) (reply model.Reply) {
}
}
func restartDocker(msg model.Message) (reply model.Reply) {
func restartDocker(msg model.Message) (reply *model.Reply) {
if err := exec.DockerContainer.RestartAndCleanContainer(); err != nil {
reply.ReplyMsg = "Error: " + err.Error()
reply.ReferOriginMsg = true

View File

@ -86,7 +86,7 @@ func (i *SystemInfo) String() string {
return builder.String()
}
func fetchSelf(msg model.Message) (reply model.Reply) {
func fetchSelf(msg model.Message) (reply *model.Reply) {
//检测是否存在fetchCmd中的命令
for _, cmd := range fetchCmd {
if _, err := exec.LookPath(cmd); err == nil {

View File

@ -11,15 +11,15 @@ func init() {
// handler.RegisterHelpInform("上网", "getweb", "上网 <URL> 截取网页")
}
func getweb(msg model.Message) (reply model.Reply) {
func getweb(msg model.Message) (reply *model.Reply) {
if len(msg.RawMsg) <= len("上网 ") {
return model.Reply{}
return &model.Reply{}
}
url := msg.RawMsg[len("上网 "):]
url = formatURL(url)
// if err := util.ScreenshotURL(url, "./tmp/getweb/url.png", 1620, 1960, 0, 0, 0, 0, ""); err != nil {
if err := util.ScreenshotURL(url, util.GenTempFilePath("getweb/url.png"), 1620, 1960, 0, 0, 0, 0, ""); err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: err.Error(),
ReferOriginMsg: true,
FromMsg: msg,
@ -31,7 +31,7 @@ func getweb(msg model.Message) (reply model.Reply) {
File: "file:///tmp/qqbot/getweb/url.png",
},
}
return model.Reply{
return &model.Reply{
ReplyMsg: imageMsg.ToCQString(),
ReferOriginMsg: true,
FromMsg: msg,

View File

@ -88,7 +88,7 @@ func RegisterRegexHandler(trigger string, handler model.Handler, level constants
}
}
func MsgInHandler(msg model.Message) (reply model.Reply) {
func MsgInHandler(msg model.Message) (reply *model.Reply) {
defer func() {
if r := recover(); r != nil {
stack := debug.Stack()
@ -100,7 +100,7 @@ func MsgInHandler(msg model.Message) (reply model.Reply) {
if msg.RawMsg != "" {
log.Default().Printf("\033[31m↓\033[0m:%v", msg)
} else {
return model.Reply{}
return nil
}
defer func() {
if reply.ReplyMsg != "" {
@ -144,7 +144,7 @@ func MsgInHandler(msg model.Message) (reply model.Reply) {
if !msg.GroupInfo.IsGroupMsg && privateAllHandler != nil {
return privateAllHandler(msg)
}
return model.Reply{}
return &model.Reply{}
}
func RegisterHelpInform(triggerName string, category string, inform string) {

View File

@ -24,7 +24,7 @@ func init() {
handler.RegisterPrivateHandler(headmasterHandler)
}
func headmasterHandler(msg model.Message) (reply model.Reply) {
func headmasterHandler(msg model.Message) (reply *model.Reply) {
var from string
if msg.GroupInfo.IsGroupMsg {
from = util.From(msg.GroupInfo.GroupId, 0)
@ -32,13 +32,13 @@ func headmasterHandler(msg model.Message) (reply model.Reply) {
from = util.From(0, msg.UserId)
}
if len(msg.RawMsg) > 7 && msg.RawMsg[0:7] == "校长 " {
return model.Reply{
return &model.Reply{
ReplyMsg: ask(from, fmt.Sprintf("{\"qqid\":%d,\"group_nickname\":\"%s\",\"nickname\":\"%s\",\"referid\":%d,\"received_time\":%s,\"msg\":\"%s\"}", msg.UserId, msg.GroupInfo.UserCard, msg.UserNickName, msg.OriginMsgId, time.Now().Format("2006-01-02 15:04:05"), msg.RawMsg[7:])),
ReferOriginMsg: false,
FromMsg: msg,
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: ask(from, fmt.Sprintf("{\"qqid\":%d,\"group_nickname\":\"%s\",\"nickname\":\"%s\",\"referid\":%d,\"received_time\":%s,\"msg\":\"%s\"}", msg.UserId, msg.GroupInfo.UserCard, msg.UserNickName, msg.OriginMsgId, time.Now().Format("2006-01-02 15:04:05"), msg.RawMsg)),
ReferOriginMsg: false,
FromMsg: msg,

View File

@ -10,9 +10,9 @@ func init() {
handler.RegisterHandler("health", health, constants.LEVEL_USER)
}
func health(msg model.Message) (reply model.Reply) {
func health(msg model.Message) (reply *model.Reply) {
heathResult := ""
return model.Reply{
return &model.Reply{
ReplyMsg: heathResult,
ReferOriginMsg: true,
FromMsg: msg,

View File

@ -3,6 +3,7 @@ package help
import (
"git.lxtend.com/qqbot/constants"
"git.lxtend.com/qqbot/handler"
"git.lxtend.com/qqbot/message"
"git.lxtend.com/qqbot/model"
"git.lxtend.com/qqbot/util"
)
@ -11,7 +12,7 @@ func init() {
handler.RegisterHandler("!help", help, constants.LEVEL_BANNED)
}
func help(msg model.Message) (reply model.Reply) {
func help(msg model.Message) *model.Reply {
var helpInfo string
if len(util.SplitN(msg.RawMsg, 2)) == 1 {
helpInfo = `请输入!help [分类] 查看下面的分类功能`
@ -27,7 +28,17 @@ func help(msg model.Message) (reply model.Reply) {
helpInfo += "\n" + v.Trigger + " : " + v.Inform
}
}
return model.Reply{
textMsg := message.NewTextMessage()
textMsg.Data.Text = helpInfo
nodeMsg := message.NewNodeMessage()
nodeMsg.Data.ID = "10086"
nodeMsg.Data.UserID = "123456789"
nodeMsg.Data.Nickname = "test"
nodeMsg.Data.Content = []interface{}{textMsg}
forwardMsg := message.NewForwardMessage()
forwardMsg.Data.ID = "10086"
forwardMsg.Data.Content = []interface{}{nodeMsg}
return &model.Reply{
ReplyMsg: helpInfo,
ReferOriginMsg: false,
FromMsg: msg,

View File

@ -8,7 +8,7 @@ import (
func init() {
go func() {
action.ActionManager.SendMsg(model.Reply{
action.ActionManager.SendMsg(&model.Reply{
ReplyMsg: "初始化完成",
FromMsg: model.Message{
GroupInfo: model.GroupInfo{

View File

@ -18,13 +18,13 @@ func init() {
handler.RegisterHelpInform("今日人品/jrrp", "今日人品", "查询今日人品")
}
func jrrpHandler(msg model.Message) (reply model.Reply) {
func jrrpHandler(msg model.Message) (reply *model.Reply) {
luck, _ := jrrpInstance.GetJrrp(fmt.Sprint(msg.UserId))
nickname := msg.UserNickName
if msg.GroupInfo.IsGroupMsg && msg.GroupInfo.UserCard != "" {
nickname = msg.GroupInfo.UserCard
}
return model.Reply{
return &model.Reply{
ReplyMsg: nickname + "同学你好,你的今日人品是:" + fmt.Sprint(luck),
ReferOriginMsg: true,
FromMsg: msg,

View File

@ -27,11 +27,11 @@ func init() {
sqlite3.TryCreateTable(createTableSQL)
}
func storeKfc(msg model.Message) (reply model.Reply) {
func storeKfc(msg model.Message) (reply *model.Reply) {
// 分割消息获取文案内容
tokens := util.SplitN(msg.RawMsg, 2)
if len(tokens) < 2 {
return model.Reply{
return &model.Reply{
ReplyMsg: "请输入要添加的疯狂星期四文案",
ReferOriginMsg: true,
FromMsg: msg,
@ -40,7 +40,7 @@ func storeKfc(msg model.Message) (reply model.Reply) {
content := strings.TrimSpace(tokens[1])
if content == "" {
return model.Reply{
return &model.Reply{
ReplyMsg: "文案内容不能为空",
ReferOriginMsg: true,
FromMsg: msg,
@ -50,7 +50,7 @@ func storeKfc(msg model.Message) (reply model.Reply) {
// 存储文案到数据库
tx, err := sqlite3.GetTran()
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "数据库错误",
ReferOriginMsg: true,
FromMsg: msg,
@ -60,7 +60,7 @@ func storeKfc(msg model.Message) (reply model.Reply) {
_, err = tx.Exec("INSERT INTO kfc_crazy (content, created_by) VALUES (?, ?)", content, msg.UserId)
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "保存文案失败",
ReferOriginMsg: true,
FromMsg: msg,
@ -69,29 +69,29 @@ func storeKfc(msg model.Message) (reply model.Reply) {
err = tx.Commit()
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "保存文案失败",
ReferOriginMsg: true,
FromMsg: msg,
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: "文案添加成功",
ReferOriginMsg: true,
FromMsg: msg,
}
}
func pickKfc(msg model.Message) (reply model.Reply) {
func pickKfc(msg model.Message) (reply *model.Reply) {
// 判断是否是周四
if time.Now().Weekday() != time.Thursday {
return model.NotReply
return nil
}
// 从数据库随机获取一条文案
tx, err := sqlite3.GetTran()
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "数据库错误",
ReferOriginMsg: true,
FromMsg: msg,
@ -102,7 +102,7 @@ func pickKfc(msg model.Message) (reply model.Reply) {
var count int
err = tx.Get(&count, "SELECT COUNT(*) FROM kfc_crazy")
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "获取文案失败",
ReferOriginMsg: true,
FromMsg: msg,
@ -110,13 +110,13 @@ func pickKfc(msg model.Message) (reply model.Reply) {
}
if count == 0 {
return model.NotReply
return nil
}
var content string
err = tx.Get(&content, "SELECT content FROM kfc_crazy ORDER BY RANDOM() LIMIT 1")
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "获取文案失败",
ReferOriginMsg: true,
FromMsg: msg,
@ -125,14 +125,14 @@ func pickKfc(msg model.Message) (reply model.Reply) {
err = tx.Commit()
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "获取文案失败",
ReferOriginMsg: true,
FromMsg: msg,
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: content,
ReferOriginMsg: true,
FromMsg: msg,

View File

@ -32,10 +32,10 @@ func initKw() {
}
}
func setKw(msg model.Message) (reply model.Reply) {
func setKw(msg model.Message) (reply *model.Reply) {
tokens := util.SplitN(msg.RawMsg, 3)
if len(tokens) < 2 {
return model.Reply{
return &model.Reply{
ReplyMsg: "参数不足, 请使用\"kw [关键词] [回复内容]\"添加关键词回复",
ReferOriginMsg: true,
FromMsg: msg,
@ -43,62 +43,62 @@ func setKw(msg model.Message) (reply model.Reply) {
}
if _, err := kw.AddKW(tokens[1], tokens[2], strconv.Itoa(int(msg.GroupInfo.GroupId)), strconv.Itoa(int(msg.UserId))); err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "添加失败",
ReferOriginMsg: true,
FromMsg: msg,
}
}
regKw(tokens[1], msg.GroupInfo.GroupId)
return model.Reply{
return &model.Reply{
ReplyMsg: "记下了",
ReferOriginMsg: true,
FromMsg: msg,
}
}
func deleteKw(msg model.Message) (reply model.Reply) {
func deleteKw(msg model.Message) (reply *model.Reply) {
tokens := util.SplitN(msg.RawMsg, 3)
if len(tokens) == 2 {
if err := kw.DeleteKW(tokens[1], strconv.Itoa(int(msg.GroupInfo.GroupId))); err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "删除失败",
ReferOriginMsg: true,
FromMsg: msg,
}
}
unRegKw(tokens[1], msg.GroupInfo.GroupId)
return model.Reply{
return &model.Reply{
ReplyMsg: "清空了",
ReferOriginMsg: true,
FromMsg: msg,
}
}
if len(tokens) < 2 {
return model.Reply{
return &model.Reply{
ReplyMsg: "参数不足, 请使用\"kwd [关键词] [回复内容]\"删除对应的关键词回复",
ReferOriginMsg: true,
FromMsg: msg,
}
}
if err := kw.DeleteKWReply(tokens[1], tokens[2], strconv.Itoa(int(msg.GroupInfo.GroupId))); err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "删除失败",
ReferOriginMsg: true,
FromMsg: msg,
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: "删除了",
ReferOriginMsg: true,
FromMsg: msg,
}
}
func getGroupAllKW(msg model.Message) (reply model.Reply) {
func getGroupAllKW(msg model.Message) (reply *model.Reply) {
kwList, err := kw.GetGroupAllKW(strconv.Itoa(int(msg.GroupInfo.GroupId)))
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "获取失败",
ReferOriginMsg: true,
FromMsg: msg,
@ -111,7 +111,7 @@ func getGroupAllKW(msg model.Message) (reply model.Reply) {
kws += "\n"
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: kws,
ReferOriginMsg: true,
FromMsg: msg,
@ -126,10 +126,10 @@ func unRegKw(keyword string, groupId int64) {
handler.UnRegisterGroupHandler(groupId, keyword)
}
func kwReply(msg model.Message) (reply model.Reply) {
func kwReply(msg model.Message) (reply *model.Reply) {
w, err := kw.GetKW(msg.RawMsg, strconv.Itoa(int(msg.GroupInfo.GroupId)))
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "",
ReferOriginMsg: false,
FromMsg: msg,
@ -140,7 +140,7 @@ func kwReply(msg model.Message) (reply model.Reply) {
wlist = append(wlist, v.Reply)
}
pick := rand.IntN(len(wlist))
return model.Reply{
return &model.Reply{
ReplyMsg: wlist[pick],
ReferOriginMsg: false,
FromMsg: msg,

View File

@ -13,30 +13,30 @@ func init() {
handler.RegisterHelpInform("取消监听新债", "新债", "关闭新债监听")
}
func listenBond(msg model.Message) (reply model.Reply) {
func listenBond(msg model.Message) (reply *model.Reply) {
if err := AddGroupListen(int(msg.GroupInfo.GroupId)); err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "开启新债监听失败,报错: " + err.Error(),
ReferOriginMsg: true,
FromMsg: msg,
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: "开启新债监听成功",
ReferOriginMsg: true,
FromMsg: msg,
}
}
func unListenBond(msg model.Message) (reply model.Reply) {
func unListenBond(msg model.Message) (reply *model.Reply) {
if err := RemoveGroupListen(int(msg.GroupInfo.GroupId)); err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "关闭新债监听失败,报错: " + err.Error(),
ReferOriginMsg: true,
FromMsg: msg,
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: "关闭新债监听成功",
ReferOriginMsg: true,
FromMsg: msg,

View File

@ -160,7 +160,7 @@ func RoundCheckNewBond() {
},
},
}
action.ActionManager.SendMsg(msg)
action.ActionManager.SendMsg(&msg)
}
}
AddBondData(bond)

View File

@ -32,81 +32,81 @@ func init() {
handler.RegisterHelpInform("/shutdown", "热更新", "结束程序")
}
func restart(msg model.Message) model.Reply {
func restart(msg model.Message) *model.Reply {
if !hasVaildBuild {
return model.Reply{
return &model.Reply{
ReplyMsg: "上次构建失败,请先成功构建再部署",
ReferOriginMsg: true,
FromMsg: msg,
}
}
go restartProgram()
return model.Reply{
return &model.Reply{
ReplyMsg: "重启中...",
ReferOriginMsg: true,
FromMsg: msg,
}
}
func shutdown(msg model.Message) model.Reply {
func shutdown(msg model.Message) *model.Reply {
go shutdownProgram()
return model.Reply{
return &model.Reply{
ReplyMsg: "关闭中...",
ReferOriginMsg: true,
FromMsg: msg,
}
}
func build(msg model.Message) model.Reply {
func build(msg model.Message) *model.Reply {
err := buildBot()
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "构建失败,报错如下\n" + err.Error(),
ReferOriginMsg: true,
FromMsg: msg,
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: "构建成功",
ReferOriginMsg: true,
FromMsg: msg,
}
}
func buildAndRestart(msg model.Message) model.Reply {
func buildAndRestart(msg model.Message) *model.Reply {
err := buildBot()
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "构建失败,报错如下\n" + err.Error(),
ReferOriginMsg: true,
FromMsg: msg,
}
}
if !hasVaildBuild {
return model.Reply{
return &model.Reply{
ReplyMsg: "构建失败,请先成功构建再部署",
ReferOriginMsg: true,
FromMsg: msg,
}
}
go restartProgram()
return model.Reply{
return &model.Reply{
ReplyMsg: "构建成功,重启中...",
ReferOriginMsg: true,
FromMsg: msg,
}
}
func pullCode(msg model.Message) model.Reply {
func pullCode(msg model.Message) *model.Reply {
err := util.GitPull()
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "拉取代码失败,报错如下\n" + err.Error(),
ReferOriginMsg: true,
FromMsg: msg,
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: "拉取代码成功",
ReferOriginMsg: true,
FromMsg: msg,

View File

@ -17,17 +17,17 @@ func init() {
handler.RegisterHelpInform("roll [次数]d[面数]", "roll", "掷骰")
}
func roll(msg model.Message) (reply model.Reply) {
func roll(msg model.Message) (reply *model.Reply) {
act, err := ParseRollExpression(msg.RawMsg)
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "",
ReferOriginMsg: false,
FromMsg: msg,
}
}
result, results := RollDice(act)
return model.Reply{
return &model.Reply{
ReplyMsg: "掷骰结果: " + strconv.Itoa(result) + "点 " + fmt.Sprint(results),
ReferOriginMsg: true,
FromMsg: msg,

View File

@ -32,7 +32,7 @@ func init() {
// handler.RegisterHandler("jss", screenshotSS, constants.LEVEL_USER)
}
func ssPlusN(msg model.Message) (reply model.Reply) {
func ssPlusN(msg model.Message) (reply *model.Reply) {
var (
resultStr strings.Builder
err error
@ -43,7 +43,7 @@ func ssPlusN(msg model.Message) (reply model.Reply) {
if len(msg.RawMsg) > len("ss+") {
N, err = strconv.Atoi(msg.RawMsg[len("ss+"):])
if err != nil || N <= 0 {
return model.Reply{
return &model.Reply{
ReplyMsg: "请输入一个正整数",
ReferOriginMsg: true,
FromMsg: msg,
@ -54,7 +54,7 @@ func ssPlusN(msg model.Message) (reply model.Reply) {
userIdStr := strconv.Itoa(int(msg.UserId))
userSSID, err := scoresaber.GetSSID(userIdStr)
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: err.Error(),
ReferOriginMsg: true,
FromMsg: msg,
@ -70,7 +70,7 @@ func ssPlusN(msg model.Message) (reply model.Reply) {
attempts++
}
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "获取您的分数时出现问题,请稍后重试。" + err.Error(),
ReferOriginMsg: true,
FromMsg: msg,
@ -80,7 +80,7 @@ func ssPlusN(msg model.Message) (reply model.Reply) {
// 获取当前用户所在区对应+N位的玩家列表
leaderboard, err := scoresaber.FetchCountryLeaderboard(userInfo.Country, userInfo.CountryRank-N, userInfo.ID)
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "获取您的分数时出现问题,请稍后重试。" + err.Error(),
ReferOriginMsg: true,
FromMsg: msg,
@ -102,14 +102,14 @@ func ssPlusN(msg model.Message) (reply model.Reply) {
}
}
resultStr.WriteString(fmt.Sprintf("您只需要再打出%.2fpp就能达到%s区第%d名。", targetPlayer.PP-userInfo.PP, userInfo.Country, targetPlayer.CountryRank))
return model.Reply{
return &model.Reply{
ReplyMsg: resultStr.String(),
ReferOriginMsg: true,
FromMsg: msg,
}
}
func getSSProfile(msg model.Message) (reply model.Reply) {
func getSSProfile(msg model.Message) (reply *model.Reply) {
var (
resultStr string
err error
@ -130,7 +130,7 @@ func getSSProfile(msg model.Message) (reply model.Reply) {
ssId, err = scoresaber.GetSSID(userIdStr)
}
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "您未绑定ss账号输入\"绑定ss [ssId]\"绑定(ssId为您的scoresaber主页链接中的数字部分)",
ReferOriginMsg: true,
FromMsg: msg,
@ -153,37 +153,37 @@ func getSSProfile(msg model.Message) (reply model.Reply) {
resultStr = "获取您的分数时出现问题,请稍后重试。" + err.Error()
}
return model.Reply{
return &model.Reply{
ReplyMsg: resultStr,
ReferOriginMsg: true,
FromMsg: msg,
}
}
func bindSS(msg model.Message) (reply model.Reply) {
return model.Reply{
func bindSS(msg model.Message) (reply *model.Reply) {
return &model.Reply{
ReplyMsg: scoresaber.SSQuery.BindSS(strconv.Itoa(int(msg.UserId)), msg.RawMsg[len("绑定ss "):]),
ReferOriginMsg: true,
FromMsg: msg,
}
}
func unbindSS(msg model.Message) (reply model.Reply) {
return model.Reply{
func unbindSS(msg model.Message) (reply *model.Reply) {
return &model.Reply{
ReplyMsg: scoresaber.SSQuery.UnbindSS(strconv.Itoa(int(msg.UserId))),
ReferOriginMsg: true,
FromMsg: msg,
}
}
func getMyRecentScore(msg model.Message) (reply model.Reply) {
func getMyRecentScore(msg model.Message) (reply *model.Reply) {
count := 1
scoreMsg := ""
if len(msg.RawMsg) > len("最新ss ") {
var err error
count, err = strconv.Atoi(msg.RawMsg[len("最新ss "):])
if err != nil || count <= 0 {
return model.Reply{
return &model.Reply{
ReplyMsg: "",
ReferOriginMsg: true,
FromMsg: msg,
@ -197,7 +197,7 @@ func getMyRecentScore(msg model.Message) (reply model.Reply) {
recordCount := 0
records, err := scoresaber.SSQuery.GetRecentScores(count, strconv.Itoa(int(msg.UserId)))
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: err.Error(),
ReferOriginMsg: true,
FromMsg: msg,
@ -238,21 +238,21 @@ func getMyRecentScore(msg model.Message) (reply model.Reply) {
if len(scoreMsg) > 0 {
scoreMsg = scoreMsg[:len(scoreMsg)-len("\n")] //去掉最后一个换行符
} else {
return model.Reply{
return &model.Reply{
ReplyMsg: "无最近游戏记录",
ReferOriginMsg: true,
FromMsg: msg,
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: "玩家 " + userName + " 的" + strconv.Itoa(recordCount) + "条最近记录为:\n" + scoreMsg,
ReferOriginMsg: true,
FromMsg: msg,
}
}
func screenshotSS(msg model.Message) (reply model.Reply) {
return model.Reply{
func screenshotSS(msg model.Message) (reply *model.Reply) {
return &model.Reply{
ReplyMsg: "[CQ:image,file=file:///tmp/qqbot/" + scoresaber.GetSSPicture(strconv.Itoa(int(msg.UserId))) + "]",
ReferOriginMsg: true,
FromMsg: msg,

View File

@ -7,6 +7,7 @@ import (
"strings"
"time"
"git.lxtend.com/qqbot/action"
"git.lxtend.com/qqbot/config"
"git.lxtend.com/qqbot/constants"
"git.lxtend.com/qqbot/handler"
@ -35,10 +36,10 @@ func init() {
go RoundCheckSteamPlaying()
}
func bindSteam(msg model.Message) model.Reply {
func bindSteam(msg model.Message) *model.Reply {
token := util.SplitN(msg.RawMsg, 2)
if len(token) < 2 {
return model.Reply{
return &model.Reply{
ReplyMsg: "请输入steamID",
ReferOriginMsg: true,
FromMsg: msg,
@ -50,111 +51,111 @@ func bindSteam(msg model.Message) model.Reply {
token[1] = steamIdInUrl[1]
}
if valid, err := checkSteamIDValid(token[1]); !valid {
return model.Reply{
return &model.Reply{
ReplyMsg: fmt.Sprintf("steamID无效: %v", err),
ReferOriginMsg: true,
FromMsg: msg,
}
} else if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: fmt.Sprintf("steamID验证失败: %v", err),
ReferOriginMsg: true,
FromMsg: msg,
}
}
if err := bindSteamUser(msg.UserId, token[1]); err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: fmt.Sprintf("绑定失败: %v", err),
ReferOriginMsg: true,
FromMsg: msg,
}
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: fmt.Sprintf("绑定steam用户%s成功如果需要开启群内上号通知请输入 启用上号通知", token[1]),
ReferOriginMsg: true,
FromMsg: msg,
}
}
func bindSteamInGroup(msg model.Message) model.Reply {
func bindSteamInGroup(msg model.Message) *model.Reply {
if user, err := getSteamUser(msg.UserId); err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: fmt.Sprintf("查询steam绑定失败: %v", err),
ReferOriginMsg: true,
FromMsg: msg,
}
} else if err := bindUserInGroup(msg.GroupInfo.GroupId, user.SteamID); err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: fmt.Sprintf("绑定至群监听列表失败: %v", err),
ReferOriginMsg: true,
FromMsg: msg,
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: "绑定至群监听列表成功",
ReferOriginMsg: true,
FromMsg: msg,
}
}
func unbindSteam(msg model.Message) model.Reply {
func unbindSteam(msg model.Message) *model.Reply {
if user, err := getSteamUser(msg.UserId); err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: fmt.Sprintf("解绑失败: %v", err),
ReferOriginMsg: true,
FromMsg: msg,
}
} else {
if err := unbindUserInAllGroup(user.SteamID); err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: fmt.Sprintf("解绑所有群监听列表失败: %v", err),
ReferOriginMsg: true,
FromMsg: msg,
}
}
if err := unbindSteamUser(msg.UserId); err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: fmt.Sprintf("解绑失败: %v", err),
ReferOriginMsg: true,
FromMsg: msg,
}
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: "解绑成功",
ReferOriginMsg: true,
FromMsg: msg,
}
}
func unbindSteamInGroup(msg model.Message) model.Reply {
func unbindSteamInGroup(msg model.Message) *model.Reply {
if user, err := getSteamUser(msg.UserId); err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: fmt.Sprintf("群监听解绑失败: %v", err),
ReferOriginMsg: true,
FromMsg: msg,
}
} else {
if err := unbindUserInGroup(msg.GroupInfo.GroupId, user.SteamID); err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: fmt.Sprintf("群监听解绑失败: %v", err),
ReferOriginMsg: true,
FromMsg: msg,
}
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: "群监听解绑成功本群内将不再查询你的steam游戏状态",
ReferOriginMsg: true,
FromMsg: msg,
}
}
func checkSteamPlaying(msg model.Message) model.Reply {
func checkSteamPlaying(msg model.Message) *model.Reply {
users, err := getSteamUsersInGroup(msg.GroupInfo.GroupId)
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: fmt.Sprintf("获取群成员steam列表失败: %v", err),
ReferOriginMsg: true,
FromMsg: msg,
@ -166,13 +167,13 @@ func checkSteamPlaying(msg model.Message) model.Reply {
}
gameList, err := checkSteamGameStatus(steamIds)
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: fmt.Sprintf("获取游戏列表失败: %v", err),
ReferOriginMsg: true,
FromMsg: msg,
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: gameList,
ReferOriginMsg: true,
FromMsg: msg,
@ -285,8 +286,7 @@ func RoundCheckSteamPlaying() {
// FromMsg: model.Message{GroupInfo: model.GroupInfo{GroupId: group}},
FromMsg: model.Message{GroupInfo: model.GroupInfo{GroupId: config.ConfigManager.GetConfig().Management.ReportGroup}},
}
// action.ActionManager.SendMsg(msg)
log.Println(msg.ReplyMsg)
action.ActionManager.SendMsg(&msg)
}
}

View File

@ -17,26 +17,26 @@ func init() {
handler.RegisterHelpInform("结单 [id]", "ticket", "结单")
}
func newTicket(msg model.Message) model.Reply {
func newTicket(msg model.Message) *model.Reply {
id, err := storeTicket(msg.RawMsg[len("提单 "):], msg.UserId, msg.GroupInfo.GroupId)
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: fmt.Sprintf("提单失败: %s", err.Error()),
ReferOriginMsg: true,
FromMsg: msg,
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: fmt.Sprintf("提单成功id为%d可以至 https://www.lxtend.com/ticket 查看工单", id),
ReferOriginMsg: true,
FromMsg: msg,
}
}
func doneTicket(msg model.Message) model.Reply {
func doneTicket(msg model.Message) *model.Reply {
id, err := strconv.Atoi(msg.RawMsg[len("结单 "):])
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: fmt.Sprintf("结单失败: %s", err.Error()),
ReferOriginMsg: true,
FromMsg: msg,
@ -44,13 +44,13 @@ func doneTicket(msg model.Message) model.Reply {
}
err = setTicketDone(id)
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: fmt.Sprintf("结单失败: %s", err.Error()),
ReferOriginMsg: true,
FromMsg: msg,
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: "结单成功",
ReferOriginMsg: true,
FromMsg: msg,

View File

@ -20,7 +20,7 @@ func init() {
handler.RegisterFrontMatchHandler("https://", plainTextUrlParser, constants.LEVEL_USER)
}
func plainTextUrlParser(msg model.Message) (reply model.Reply) {
func plainTextUrlParser(msg model.Message) (reply *model.Reply) {
url := msg.RawMsg
url = strings.Split(url, " ")[0]
url = strings.Split(url, "\n")[0]
@ -29,7 +29,7 @@ func plainTextUrlParser(msg model.Message) (reply model.Reply) {
url, _ = removeTrackingParams(url)
newUrl, err := resolveFinalURL(url)
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "",
ReferOriginMsg: false,
FromMsg: msg,
@ -37,31 +37,31 @@ func plainTextUrlParser(msg model.Message) (reply model.Reply) {
}
newUrl, _ = removeTrackingParams(newUrl)
if util.IsEquivalentURL(url, newUrl) {
return model.Reply{
return &model.Reply{
ReplyMsg: "",
ReferOriginMsg: false,
FromMsg: msg,
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: newUrl,
ReferOriginMsg: true,
FromMsg: msg,
}
}
func cqJsonUrlParser(msg model.Message) (reply model.Reply) {
func cqJsonUrlParser(msg model.Message) (reply *model.Reply) {
newMsg := strings.ReplaceAll(msg.RawMsg, "\n", "")
qqdocurl, err := extractQQDocURL(newMsg)
if err != nil {
return model.Reply{
return &model.Reply{
ReplyMsg: "",
ReferOriginMsg: true,
FromMsg: msg,
}
}
return model.Reply{
return &model.Reply{
ReplyMsg: qqdocurl,
ReferOriginMsg: true,
FromMsg: msg,

View File

@ -10,18 +10,18 @@ func init() {
handler.RegisterHandler("wordle", wordle, constants.LEVEL_USER)
}
func wordle(msg model.Message) (reply model.Reply) {
func wordle(msg model.Message) (reply *model.Reply) {
handler.RegisterLiveHandler(msg.GroupInfo.GroupId, msg.UserId, tempTrigger)
return model.Reply{
return &model.Reply{
ReplyMsg: "",
ReferOriginMsg: true,
FromMsg: msg,
}
}
func tempTrigger(msg model.Message) (reply model.Reply, isTrigger bool) {
func tempTrigger(msg model.Message) (reply *model.Reply, isTrigger bool) {
handler.UnRegisterLiveHandler(msg.GroupInfo.GroupId, msg.UserId)
return model.Reply{
return &model.Reply{
ReplyMsg: " ",
ReferOriginMsg: true,
FromMsg: msg,

View File

@ -20,14 +20,14 @@ func init() {
handler.RegisterHelpInform("悲报 [内容]", "喜报/悲报", "生成悲报图片,支持换行或多消息发送")
}
func xiBao(msg model.Message) (reply model.Reply) {
func xiBao(msg model.Message) (reply *model.Reply) {
fileName := uuid.New().String()
filePath := util.GenTempFilePath(fmt.Sprintf("%s.png", fileName))
re := regexp.MustCompile(`\s+`)
tokens := re.Split(msg.RawMsg, 2)
if len(tokens) < 2 {
handler.RegisterLiveHandler(msg.GroupInfo.GroupId, msg.UserId, xiBaoTemp)
return model.Reply{
return &model.Reply{
ReplyMsg: "",
ReferOriginMsg: false,
FromMsg: msg,
@ -40,14 +40,14 @@ func xiBao(msg model.Message) (reply model.Reply) {
File: "file://" + filePath,
},
}
return model.Reply{
return &model.Reply{
ReplyMsg: imageMsg.ToCQString(),
ReferOriginMsg: true,
FromMsg: msg,
}
}
func xiBaoTemp(msg model.Message) (reply model.Reply, isTrigger bool) {
func xiBaoTemp(msg model.Message) (reply *model.Reply, isTrigger bool) {
handler.UnRegisterLiveHandler(msg.GroupInfo.GroupId, msg.UserId)
fileName := uuid.New().String()
filePath := util.GenTempFilePath(fmt.Sprintf("%s.png", fileName))
@ -58,21 +58,21 @@ func xiBaoTemp(msg model.Message) (reply model.Reply, isTrigger bool) {
File: "file://" + filePath,
},
}
return model.Reply{
return &model.Reply{
ReplyMsg: imageMsg.ToCQString(),
ReferOriginMsg: true,
FromMsg: msg,
}, true
}
func beiBao(msg model.Message) (reply model.Reply) {
func beiBao(msg model.Message) (reply *model.Reply) {
fileName := uuid.New().String()
filePath := util.GenTempFilePath(fmt.Sprintf("%s.png", fileName))
re := regexp.MustCompile(`\s+`)
tokens := re.Split(msg.RawMsg, 2)
if len(tokens) < 2 {
handler.RegisterLiveHandler(msg.GroupInfo.GroupId, msg.UserId, beiBaoTemp)
return model.Reply{
return &model.Reply{
ReplyMsg: "",
ReferOriginMsg: false,
FromMsg: msg,
@ -85,14 +85,14 @@ func beiBao(msg model.Message) (reply model.Reply) {
File: "file:///tmp/qqbot/" + fileName + ".png",
},
}
return model.Reply{
return &model.Reply{
ReplyMsg: imageMsg.ToCQString(),
ReferOriginMsg: true,
FromMsg: msg,
}
}
func beiBaoTemp(msg model.Message) (reply model.Reply, isTrigger bool) {
func beiBaoTemp(msg model.Message) (reply *model.Reply, isTrigger bool) {
handler.UnRegisterLiveHandler(msg.GroupInfo.GroupId, msg.UserId)
fileName := uuid.New().String()
filePath := util.GenTempFilePath(fmt.Sprintf("%s.png", fileName))
@ -103,7 +103,7 @@ func beiBaoTemp(msg model.Message) (reply model.Reply, isTrigger bool) {
File: "file:///tmp/qqbot/" + fileName + ".png",
},
}
return model.Reply{
return &model.Reply{
ReplyMsg: imageMsg.ToCQString(),
ReferOriginMsg: true,
FromMsg: msg,

View File

@ -2,8 +2,8 @@ package model
import "git.lxtend.com/qqbot/constants"
type Handler func(msg Message) (reply Reply)
type TryCatchHandler func(msg Message) (reply Reply, catched bool)
type Handler func(msg Message) (reply *Reply)
type TryCatchHandler func(msg Message) (reply *Reply, catched bool)
type HandlerInfo[H Handler | TryCatchHandler] struct {
Trigger string

View File

@ -15,13 +15,7 @@ type GroupInfo struct {
}
type Reply struct {
ReplyMsg string `json:"replyMsg"`
ReplyMsg interface{} `json:"replyMsg"`
ReferOriginMsg bool `json:"referOriginMsg"`
FromMsg Message `json:"fromMsg"`
}
var NotReply = Reply{
ReplyMsg: "",
ReferOriginMsg: false,
FromMsg: Message{},
}

View File

@ -16,11 +16,11 @@ type SendPkg struct {
type UpstreamParams struct {
UserID int64 `json:"user_id"`
GroupID int64 `json:"group_id"`
Message string `json:"message"`
Message interface{} `json:"message"`
AutoEscape bool `json:"auto_escape"`
}
func GenSendPkg(userID int64, groupID int64, message string, autoEscape bool) SendPkg {
func GenSendPkg(userID int64, groupID int64, message interface{}, autoEscape bool) SendPkg {
if groupID == 0 {
return SendPkg{
Action: constants.PRIVATE_MSG_SEND,

View File

@ -90,7 +90,7 @@ func (c *WebSocketClient) receiveMessages() {
}
go func() {
reply := handler.MsgInHandler(msg)
if reply.ReplyMsg != "" {
if reply != nil {
action.ActionManager.SendMsg(reply)
}
}()