From a1a64334c8349bdf1fae62a039c0bbc593b44346 Mon Sep 17 00:00:00 2001 From: lixiangwuxian Date: Fri, 14 Mar 2025 17:41:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E7=96=AF=E7=8B=82?= =?UTF-8?q?=E6=98=9F=E6=9C=9F=E5=9B=9B=E6=96=87=E6=A1=88=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 kfccrazy 包,包含随机输出和添加疯狂星期四文案的功能 - 在 router.go 中重新启用重启机器人处理器的路由 - 创建 kfc_crazy 数据库表以存储文案内容 --- handler/kfccrazy/kfc.go | 139 ++++++++++++++++++++++++++++++++++++++++ register.go | 1 + router.go | 2 +- 3 files changed, 141 insertions(+), 1 deletion(-) create mode 100644 handler/kfccrazy/kfc.go diff --git a/handler/kfccrazy/kfc.go b/handler/kfccrazy/kfc.go new file mode 100644 index 0000000..997e7a0 --- /dev/null +++ b/handler/kfccrazy/kfc.go @@ -0,0 +1,139 @@ +package kfccrazy + +import ( + "strings" + + "git.lxtend.com/qqbot/constants" + "git.lxtend.com/qqbot/handler" + "git.lxtend.com/qqbot/model" + "git.lxtend.com/qqbot/sqlite3" + "git.lxtend.com/qqbot/util" +) + +func init() { + handler.RegisterHelpInform("疯狂星期四", "疯狂星期四", "随机输出疯狂星期四文案") + handler.RegisterHandler("疯狂星期四", pickKfc, constants.LEVEL_USER) + handler.RegisterHelpInform("疯狂星期四文案添加", "疯狂星期四文案添加", "添加疯狂星期四文案") + handler.RegisterHandler("疯狂星期四文案添加", storeKfc, constants.LEVEL_USER) + + // 创建疯狂星期四文案表 + createTableSQL := `CREATE TABLE IF NOT EXISTS kfc_crazy ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + content TEXT NOT NULL, + created_by TEXT NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + );` + sqlite3.TryCreateTable(createTableSQL) +} + +func storeKfc(msg model.Message) (reply model.Reply) { + // 分割消息获取文案内容 + tokens := util.SplitN(msg.RawMsg, 2) + if len(tokens) < 2 { + return model.Reply{ + ReplyMsg: "请输入要添加的疯狂星期四文案", + ReferOriginMsg: true, + FromMsg: msg, + } + } + + content := strings.TrimSpace(tokens[1]) + if content == "" { + return model.Reply{ + ReplyMsg: "文案内容不能为空", + ReferOriginMsg: true, + FromMsg: msg, + } + } + + // 存储文案到数据库 + tx, err := sqlite3.GetTran() + if err != nil { + return model.Reply{ + ReplyMsg: "数据库错误", + ReferOriginMsg: true, + FromMsg: msg, + } + } + defer tx.Rollback() + + _, err = tx.Exec("INSERT INTO kfc_crazy (content, created_by) VALUES (?, ?)", content, msg.UserId) + if err != nil { + return model.Reply{ + ReplyMsg: "保存文案失败", + ReferOriginMsg: true, + FromMsg: msg, + } + } + + err = tx.Commit() + if err != nil { + return model.Reply{ + ReplyMsg: "保存文案失败", + ReferOriginMsg: true, + FromMsg: msg, + } + } + + return model.Reply{ + ReplyMsg: "文案添加成功", + ReferOriginMsg: true, + FromMsg: msg, + } +} + +func pickKfc(msg model.Message) (reply model.Reply) { + // 从数据库随机获取一条文案 + tx, err := sqlite3.GetTran() + if err != nil { + return model.Reply{ + ReplyMsg: "数据库错误", + ReferOriginMsg: true, + FromMsg: msg, + } + } + defer tx.Rollback() + + var count int + err = tx.Get(&count, "SELECT COUNT(*) FROM kfc_crazy") + if err != nil { + return model.Reply{ + ReplyMsg: "获取文案失败", + ReferOriginMsg: true, + FromMsg: msg, + } + } + + if count == 0 { + return model.Reply{ + ReplyMsg: "还没有任何疯狂星期四文案,快来添加吧!", + ReferOriginMsg: true, + FromMsg: msg, + } + } + + var content string + err = tx.Get(&content, "SELECT content FROM kfc_crazy ORDER BY RANDOM() LIMIT 1") + if err != nil { + return model.Reply{ + ReplyMsg: "获取文案失败", + ReferOriginMsg: true, + FromMsg: msg, + } + } + + err = tx.Commit() + if err != nil { + return model.Reply{ + ReplyMsg: "获取文案失败", + ReferOriginMsg: true, + FromMsg: msg, + } + } + + return model.Reply{ + ReplyMsg: content, + ReferOriginMsg: true, + FromMsg: msg, + } +} diff --git a/register.go b/register.go index 60bfdca..2e62cd3 100644 --- a/register.go +++ b/register.go @@ -11,6 +11,7 @@ import ( _ "git.lxtend.com/qqbot/handler/headmaster" _ "git.lxtend.com/qqbot/handler/help" _ "git.lxtend.com/qqbot/handler/jrrp" + _ "git.lxtend.com/qqbot/handler/kfccrazy" _ "git.lxtend.com/qqbot/handler/kw" _ "git.lxtend.com/qqbot/handler/newbond" _ "git.lxtend.com/qqbot/handler/restart" diff --git a/router.go b/router.go index 4751f08..513e73f 100644 --- a/router.go +++ b/router.go @@ -27,6 +27,6 @@ func startRouter() { gitEngine := ginServer.Group("/git") gitEngine.GET("/pull", restart.PullCodeHandler) gitEngine.GET("/build", restart.BuildBotHandler) - // gitEngine.GET("/restart", restart.RestartBotHandler) + gitEngine.GET("/restart", restart.RestartBotHandler) go ginServer.Run(":3434") }