fix: 修改多个处理函数的返回类型为指针类型,以提高内存使用效率并避免不必要的拷贝
This commit is contained in:
parent
144034939c
commit
7f0560b56e
@ -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 {
|
||||
|
10
auth/auth.go
10
auth/auth.go
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
@ -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,
|
||||
|
@ -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) {
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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{
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -160,7 +160,7 @@ func RoundCheckNewBond() {
|
||||
},
|
||||
},
|
||||
}
|
||||
action.ActionManager.SendMsg(msg)
|
||||
action.ActionManager.SendMsg(&msg)
|
||||
}
|
||||
}
|
||||
AddBondData(bond)
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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{},
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -90,7 +90,7 @@ func (c *WebSocketClient) receiveMessages() {
|
||||
}
|
||||
go func() {
|
||||
reply := handler.MsgInHandler(msg)
|
||||
if reply.ReplyMsg != "" {
|
||||
if reply != nil {
|
||||
action.ActionManager.SendMsg(reply)
|
||||
}
|
||||
}()
|
||||
|
Loading…
x
Reference in New Issue
Block a user