From d07b3b9456fa83b3fc061d811b189a5fb2be7404 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=AF=BB=E6=AC=A2?= Date: Fri, 5 Jul 2024 09:32:39 +0800 Subject: [PATCH 1/3] =?UTF-8?q?:fire:=20=E4=BB=A3=E7=A0=81=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/friend.go | 4 ++-- common/current/robot.go | 12 ++++++------ config/ai.go | 6 +++--- initialization/plugin.go | 10 +++++----- initialization/wechat.go | 4 ++-- model/{ => dto}/friend.go | 2 +- model/{ => dto}/leigod.go | 2 +- model/{ => dto}/message.go | 2 +- model/{ => dto}/news.go | 2 +- model/{ => dto}/response.go | 2 +- model/{ => dto}/userinfo.go | 2 +- {entity => model/entity}/aiassistant.go | 2 +- {entity => model/entity}/friend.go | 0 {entity => model/entity}/message.go | 0 {entity => model/entity}/plugindata.go | 0 {vo => model/vo}/friend.go | 0 {vo => model/vo}/leigod.go | 0 {vo => model/vo}/message.go | 0 mq/handler.go | 4 ++-- plugin/plugin.go | 20 ++++++++++---------- plugin/plugins/ai.go | 2 +- plugin/plugins/command/ai.go | 2 +- plugin/plugins/command/leigod.go | 8 ++++---- plugin/plugins/save2db.go | 2 +- plugin/plugins/welconenew.go | 2 +- router/router.go | 2 +- service/aiassistant.go | 2 +- service/friend.go | 4 ++-- service/group.go | 2 +- service/message.go | 4 ++-- tasks/cleargroupuser/cleargroupuser.go | 2 +- tasks/friends/friends.go | 12 ++++++------ tasks/summary/summary.go | 2 +- tasks/watergroup/month.go | 2 +- tasks/watergroup/week.go | 2 +- tasks/watergroup/year.go | 2 +- tasks/watergroup/yesterday.go | 2 +- tcpserver/parse.go | 4 ++-- utils/leigod.go | 18 +++++++++--------- utils/news.go | 4 ++-- 40 files changed, 77 insertions(+), 77 deletions(-) rename model/{ => dto}/friend.go (99%) rename model/{ => dto}/leigod.go (99%) rename model/{ => dto}/message.go (99%) rename model/{ => dto}/news.go (97%) rename model/{ => dto}/response.go (93%) rename model/{ => dto}/userinfo.go (98%) rename {entity => model/entity}/aiassistant.go (90%) rename {entity => model/entity}/friend.go (100%) rename {entity => model/entity}/message.go (100%) rename {entity => model/entity}/plugindata.go (100%) rename {vo => model/vo}/friend.go (100%) rename {vo => model/vo}/leigod.go (100%) rename {vo => model/vo}/message.go (100%) diff --git a/app/friend.go b/app/friend.go index 1bd2e6a..1cc9c6e 100644 --- a/app/friend.go +++ b/app/friend.go @@ -3,7 +3,7 @@ package app import ( "github.com/gin-gonic/gin" "go-wechat/client" - "go-wechat/entity" + "go-wechat/model/entity" "gorm.io/gorm" "log" "net/http" @@ -20,7 +20,7 @@ type changeStatusParam struct { // @description: 修改使用的AI模型用的参数集 type changeUseAiModelParam struct { WxId string `json:"wxid" binding:"required"` // 群Id或微信Id - Model string `json:"model"` // 模型代码 + Model string `json:"dto"` // 模型代码 } // autoClearMembers diff --git a/common/current/robot.go b/common/current/robot.go index dae5fa6..3cb2fd5 100644 --- a/common/current/robot.go +++ b/common/current/robot.go @@ -1,14 +1,14 @@ package current import ( - "go-wechat/model" - plugin "go-wechat/plugin" + "go-wechat/model/dto" + "go-wechat/plugin" ) // robotInfo // @description: 机器人信息 type robotInfo struct { - info model.RobotUserInfo + info dto.RobotUserInfo MessageHandler plugin.MessageHandler // 启用的插件 } @@ -18,14 +18,14 @@ var ri robotInfo // SetRobotInfo // @description: 设置机器人信息 // @param info -func SetRobotInfo(info model.RobotUserInfo) { +func SetRobotInfo(info dto.RobotUserInfo) { ri.info = info } // GetRobotInfo // @description: 获取机器人信息 -// @return model.RobotUserInfo -func GetRobotInfo() model.RobotUserInfo { +// @return dto.RobotUserInfo +func GetRobotInfo() dto.RobotUserInfo { return ri.info } diff --git a/config/ai.go b/config/ai.go index fb05374..cdc44a3 100644 --- a/config/ai.go +++ b/config/ai.go @@ -4,7 +4,7 @@ package config // @description: AI配置 type ai struct { Enable bool `json:"enable" yaml:"enable"` // 是否启用AI - Model string `json:"model" yaml:"model"` // 模型 + Model string `json:"dto" yaml:"dto"` // 模型 SummaryModel string `json:"summaryModel" yaml:"summaryModel"` // 总结模型 ApiKey string `json:"apiKey" yaml:"apiKey"` // API Key BaseUrl string `json:"baseUrl" yaml:"baseUrl"` // API地址 @@ -15,6 +15,6 @@ type ai struct { // aiModel // @description: AI模型 type aiModel struct { - Name string `json:"name" yaml:"name"` // 模型名称 - Model string `json:"model" yaml:"model"` // 模型代码 + Name string `json:"name" yaml:"name"` // 模型名称 + Model string `json:"dto" yaml:"dto"` // 模型代码 } diff --git a/initialization/plugin.go b/initialization/plugin.go index 515fd51..2daded4 100644 --- a/initialization/plugin.go +++ b/initialization/plugin.go @@ -2,7 +2,7 @@ package initialization import ( "go-wechat/common/current" - "go-wechat/model" + "go-wechat/model/dto" plugin "go-wechat/plugin" "go-wechat/plugin/plugins" "go-wechat/service" @@ -19,25 +19,25 @@ func Plugin() { // 注册插件 // 保存消息进数据库 - dispatcher.RegisterHandler(func(*model.Message) bool { + dispatcher.RegisterHandler(func(*dto.Message) bool { return true }, plugins.SaveToDb) // 私聊指令消息 - dispatcher.RegisterHandler(func(m *model.Message) bool { + dispatcher.RegisterHandler(func(m *dto.Message) bool { // 私聊消息 或 群聊艾特机器人并且以/开头的消息 isGroupAt := m.IsAt() && !m.IsAtAll() return (m.IsPrivateText() || isGroupAt) && m.CleanContentStartWith("/") && service.CheckIsEnableCommand(m.FromUser) }, plugins.Command) // AI消息插件 - dispatcher.RegisterHandler(func(m *model.Message) bool { + dispatcher.RegisterHandler(func(m *dto.Message) bool { // 群内@或者私聊文字消息 return (m.IsAt() && !m.IsAtAll()) || m.IsPrivateText() }, plugins.AI) // 欢迎新成员 - dispatcher.RegisterHandler(func(m *model.Message) bool { + dispatcher.RegisterHandler(func(m *dto.Message) bool { return m.IsNewUserJoin() }, plugins.WelcomeNew) diff --git a/initialization/wechat.go b/initialization/wechat.go index 08f99b5..95c5a40 100644 --- a/initialization/wechat.go +++ b/initialization/wechat.go @@ -4,7 +4,7 @@ import ( "github.com/go-resty/resty/v2" "go-wechat/common/current" "go-wechat/config" - "go-wechat/model" + "go-wechat/model/dto" "log" ) @@ -12,7 +12,7 @@ import ( // @description: 初始化微信机器人信息 func InitWechatRobotInfo() { // 获取数据 - var base model.Response[model.RobotUserInfo] + var base dto.Response[dto.RobotUserInfo] _, err := resty.New().R(). SetHeader("Content-Type", "application/json;chartset=utf-8"). SetResult(&base). diff --git a/model/friend.go b/model/dto/friend.go similarity index 99% rename from model/friend.go rename to model/dto/friend.go index 34caa18..88482a3 100644 --- a/model/friend.go +++ b/model/dto/friend.go @@ -1,4 +1,4 @@ -package model +package dto // FriendItem // @description: 好友列表数据 diff --git a/model/leigod.go b/model/dto/leigod.go similarity index 99% rename from model/leigod.go rename to model/dto/leigod.go index 274f15a..f134ddb 100644 --- a/model/leigod.go +++ b/model/dto/leigod.go @@ -1,4 +1,4 @@ -package model +package dto // LeiGodLoginResp // @description: 雷神登录返回 diff --git a/model/message.go b/model/dto/message.go similarity index 99% rename from model/message.go rename to model/dto/message.go index 1e99cc9..09e39ec 100644 --- a/model/message.go +++ b/model/dto/message.go @@ -1,4 +1,4 @@ -package model +package dto import ( "encoding/xml" diff --git a/model/news.go b/model/dto/news.go similarity index 97% rename from model/news.go rename to model/dto/news.go index bdfc397..bf2b10b 100644 --- a/model/news.go +++ b/model/dto/news.go @@ -1,4 +1,4 @@ -package model +package dto // MorningPost // @description: 每日早报返回结构体 diff --git a/model/response.go b/model/dto/response.go similarity index 93% rename from model/response.go rename to model/dto/response.go index 4bf376e..1660a60 100644 --- a/model/response.go +++ b/model/dto/response.go @@ -1,4 +1,4 @@ -package model +package dto // Response // @description: 基础返回结构体 diff --git a/model/userinfo.go b/model/dto/userinfo.go similarity index 98% rename from model/userinfo.go rename to model/dto/userinfo.go index 15cae66..7062bcf 100644 --- a/model/userinfo.go +++ b/model/dto/userinfo.go @@ -1,4 +1,4 @@ -package model +package dto // RobotUserInfo // @description: 机器人用户信息 diff --git a/entity/aiassistant.go b/model/entity/aiassistant.go similarity index 90% rename from entity/aiassistant.go rename to model/entity/aiassistant.go index 61cd66b..8383603 100644 --- a/entity/aiassistant.go +++ b/model/entity/aiassistant.go @@ -14,7 +14,7 @@ type AiAssistant struct { CreatedAt types.DateTime `json:"createdAt"` Name string `json:"name" gorm:"type:varchar(10);not null;comment:'名称'"` Personality string `json:"personality" gorm:"type:varchar(999);not null;comment:'人设'"` - Model string `json:"model" gorm:"type:varchar(50);not null;comment:'使用的模型'"` + Model string `json:"dto" gorm:"type:varchar(50);not null;comment:'使用的模型'"` Enable bool `json:"enable" gorm:"type:tinyint(1);not null;default:1;comment:'是否启用'"` } diff --git a/entity/friend.go b/model/entity/friend.go similarity index 100% rename from entity/friend.go rename to model/entity/friend.go diff --git a/entity/message.go b/model/entity/message.go similarity index 100% rename from entity/message.go rename to model/entity/message.go diff --git a/entity/plugindata.go b/model/entity/plugindata.go similarity index 100% rename from entity/plugindata.go rename to model/entity/plugindata.go diff --git a/vo/friend.go b/model/vo/friend.go similarity index 100% rename from vo/friend.go rename to model/vo/friend.go diff --git a/vo/leigod.go b/model/vo/leigod.go similarity index 100% rename from vo/leigod.go rename to model/vo/leigod.go diff --git a/vo/message.go b/model/vo/message.go similarity index 100% rename from vo/message.go rename to model/vo/message.go diff --git a/mq/handler.go b/mq/handler.go index be76ac3..9483989 100644 --- a/mq/handler.go +++ b/mq/handler.go @@ -4,7 +4,7 @@ import ( "encoding/json" "go-wechat/common/current" "go-wechat/config" - "go-wechat/model" + "go-wechat/model/dto" "go-wechat/types" "go-wechat/utils" "log" @@ -15,7 +15,7 @@ import ( // @description: 解析消息 // @param msg func parse(msg []byte) { - var m model.Message + var m dto.Message if err := json.Unmarshal(msg, &m); err != nil { log.Printf("消息解析失败: %v", err) log.Printf("消息内容: %d -> %v", len(msg), string(msg)) diff --git a/plugin/plugin.go b/plugin/plugin.go index 1ae565d..bfc2799 100644 --- a/plugin/plugin.go +++ b/plugin/plugin.go @@ -1,21 +1,21 @@ package plugin import ( - "go-wechat/model" + "go-wechat/model/dto" ) // MessageHandler 消息处理函数 -type MessageHandler func(msg *model.Message) +type MessageHandler func(msg *dto.Message) // MessageDispatcher 消息分发处理接口 // 跟 DispatchMessage 结合封装成 MessageHandler type MessageDispatcher interface { - Dispatch(msg *model.Message) + Dispatch(msg *dto.Message) } // DispatchMessage 跟 MessageDispatcher 结合封装成 MessageHandler -func DispatchMessage(dispatcher MessageDispatcher) func(msg *model.Message) { - return func(msg *model.Message) { dispatcher.Dispatch(msg) } +func DispatchMessage(dispatcher MessageDispatcher) func(msg *dto.Message) { + return func(msg *dto.Message) { dispatcher.Dispatch(msg) } } // MessageDispatcher impl @@ -30,7 +30,7 @@ type MessageContext struct { index int abortIndex int messageHandlers MessageContextHandlerGroup - *model.Message + *dto.Message } // Next 主动调用下一个消息处理函数(或开始调用) @@ -65,11 +65,11 @@ func (c *MessageContext) AbortHandler() MessageContextHandler { } // MatchFunc 消息匹配函数,返回为true则表示匹配 -type MatchFunc func(*model.Message) bool +type MatchFunc func(*dto.Message) bool // MatchFuncList 将多个MatchFunc封装成一个MatchFunc func MatchFuncList(matchFuncs ...MatchFunc) MatchFunc { - return func(message *model.Message) bool { + return func(message *dto.Message) bool { for _, matchFunc := range matchFuncs { if !matchFunc(message) { return false @@ -89,7 +89,7 @@ type matchNodes []*matchNode // MessageMatchDispatcher impl MessageDispatcher interface // // dispatcher := NewMessageMatchDispatcher() -// dispatcher.OnText(func(msg *model.Message){ +// dispatcher.OnText(func(msg *dto.Message){ // msg.ReplyText("hello") // }) // bot := DefaultBot() @@ -113,7 +113,7 @@ func (m *MessageMatchDispatcher) SetAsync(async bool) { // 遍历 MessageMatchDispatcher 所有的消息处理函数 // 获取所有匹配上的函数 // 执行处理的消息处理方法 -func (m *MessageMatchDispatcher) Dispatch(msg *model.Message) { +func (m *MessageMatchDispatcher) Dispatch(msg *dto.Message) { var group MessageContextHandlerGroup for _, node := range m.matchNodes { if node.matchFunc(msg) { diff --git a/plugin/plugins/ai.go b/plugin/plugins/ai.go index 2619c11..b409e25 100644 --- a/plugin/plugins/ai.go +++ b/plugin/plugins/ai.go @@ -8,7 +8,7 @@ import ( "go-wechat/client" "go-wechat/common/current" "go-wechat/config" - "go-wechat/entity" + "go-wechat/model/entity" "go-wechat/plugin" "go-wechat/service" "go-wechat/types" diff --git a/plugin/plugins/command/ai.go b/plugin/plugins/command/ai.go index db1aa92..4e7115c 100644 --- a/plugin/plugins/command/ai.go +++ b/plugin/plugins/command/ai.go @@ -3,7 +3,7 @@ package command import ( "fmt" "go-wechat/client" - "go-wechat/entity" + "go-wechat/model/entity" "go-wechat/utils" "log" "strings" diff --git a/plugin/plugins/command/leigod.go b/plugin/plugins/command/leigod.go index db5e66d..f66512c 100644 --- a/plugin/plugins/command/leigod.go +++ b/plugin/plugins/command/leigod.go @@ -5,10 +5,10 @@ import ( "errors" "fmt" "go-wechat/client" - "go-wechat/entity" - "go-wechat/model" + "go-wechat/model/dto" + "go-wechat/model/entity" + "go-wechat/model/vo" "go-wechat/utils" - "go-wechat/vo" "gorm.io/gorm" "log" "strings" @@ -156,7 +156,7 @@ func (l leiGod) info() (replyMsg string) { if err = lgu.Login(); err != nil { return "登录失败: " + err.Error() } - var ui model.LeiGodUserInfoResp + var ui dto.LeiGodUserInfoResp if ui, err = lgu.Info(); err != nil { return "获取详情失败: " + err.Error() } diff --git a/plugin/plugins/save2db.go b/plugin/plugins/save2db.go index 18d294b..555cd41 100644 --- a/plugin/plugins/save2db.go +++ b/plugin/plugins/save2db.go @@ -1,7 +1,7 @@ package plugins import ( - "go-wechat/entity" + "go-wechat/model/entity" "go-wechat/plugin" "go-wechat/service" "time" diff --git a/plugin/plugins/welconenew.go b/plugin/plugins/welconenew.go index 2a89d1c..d5f80a6 100644 --- a/plugin/plugins/welconenew.go +++ b/plugin/plugins/welconenew.go @@ -3,7 +3,7 @@ package plugins import ( "go-wechat/client" "go-wechat/config" - "go-wechat/entity" + "go-wechat/model/entity" "go-wechat/plugin" "go-wechat/utils" ) diff --git a/router/router.go b/router/router.go index d216360..eb4618a 100644 --- a/router/router.go +++ b/router/router.go @@ -24,7 +24,7 @@ func Init(g *gin.Engine) { // 接口 api := g.Group("/api") api.PUT("/ai/status", app.ChangeEnableAiStatus) // 修改是否开启AI状态 - api.POST("/ai/model", app.ChangeUseAiModel) // 修改使用的AI模型 + api.POST("/ai/dto", app.ChangeUseAiModel) // 修改使用的AI模型 api.POST("/ai/assistant", app.ChangeUseAiAssistant) // 修改使用的AI助手 api.PUT("/welcome/status", app.ChangeEnableWelcomeStatus) // 修改是否开启迎新状态 api.PUT("/command/status", app.ChangeEnableCommandStatus) // 修改是否开启指令状态 diff --git a/service/aiassistant.go b/service/aiassistant.go index f5608fe..2d1ba52 100644 --- a/service/aiassistant.go +++ b/service/aiassistant.go @@ -2,7 +2,7 @@ package service import ( "go-wechat/client" - "go-wechat/entity" + "go-wechat/model/entity" ) // GetAllAiAssistant diff --git a/service/friend.go b/service/friend.go index 0a40f95..1729f34 100644 --- a/service/friend.go +++ b/service/friend.go @@ -2,8 +2,8 @@ package service import ( "go-wechat/client" - "go-wechat/entity" - "go-wechat/vo" + "go-wechat/model/entity" + "go-wechat/model/vo" "log" "strings" ) diff --git a/service/group.go b/service/group.go index 1475497..b25ff6a 100644 --- a/service/group.go +++ b/service/group.go @@ -2,7 +2,7 @@ package service import ( "go-wechat/client" - "go-wechat/vo" + "go-wechat/model/vo" ) // GetGroupUsersByGroupId diff --git a/service/message.go b/service/message.go index 7708aa2..c3171bb 100644 --- a/service/message.go +++ b/service/message.go @@ -2,8 +2,8 @@ package service import ( "go-wechat/client" - "go-wechat/entity" - "go-wechat/vo" + "go-wechat/model/entity" + "go-wechat/model/vo" "log" "os" "strconv" diff --git a/tasks/cleargroupuser/cleargroupuser.go b/tasks/cleargroupuser/cleargroupuser.go index ea59ea2..a199d4a 100644 --- a/tasks/cleargroupuser/cleargroupuser.go +++ b/tasks/cleargroupuser/cleargroupuser.go @@ -3,7 +3,7 @@ package cleargroupuser import ( "fmt" "go-wechat/client" - "go-wechat/entity" + "go-wechat/model/entity" "go-wechat/service" "go-wechat/utils" "log" diff --git a/tasks/friends/friends.go b/tasks/friends/friends.go index b423839..fb52e40 100644 --- a/tasks/friends/friends.go +++ b/tasks/friends/friends.go @@ -6,8 +6,8 @@ import ( "go-wechat/client" "go-wechat/common/constant" "go-wechat/config" - "go-wechat/entity" - "go-wechat/model" + "go-wechat/model/dto" + "go-wechat/model/entity" "go-wechat/utils" "gorm.io/gorm" "log" @@ -24,7 +24,7 @@ var hc = resty.New() // Sync // @description: 同步好友列表 func Sync() { - var base model.Response[[]model.FriendItem] + var base dto.Response[[]dto.FriendItem] resp, err := hc.R(). SetHeader("Content-Type", "application/json;chartset=utf-8"). @@ -155,7 +155,7 @@ func Sync() { // @description: 同步群成员 // @param gid func syncGroupUsers(tx *gorm.DB, gid string) { - var baseResp model.Response[model.GroupUser] + var baseResp dto.Response[dto.GroupUser] // 组装参数 param := map[string]any{ @@ -242,8 +242,8 @@ func syncGroupUsers(tx *gorm.DB, gid string) { // @param wxid // @return ent // @return err -func getContactProfile(wxid string) (ent model.ContactProfile, err error) { - var baseResp model.Response[model.ContactProfile] +func getContactProfile(wxid string) (ent dto.ContactProfile, err error) { + var baseResp dto.Response[dto.ContactProfile] // 组装参数 param := map[string]any{ diff --git a/tasks/summary/summary.go b/tasks/summary/summary.go index 94c3aa1..1316b31 100644 --- a/tasks/summary/summary.go +++ b/tasks/summary/summary.go @@ -5,9 +5,9 @@ import ( "fmt" "github.com/sashabaranov/go-openai" "go-wechat/config" + "go-wechat/model/vo" "go-wechat/service" "go-wechat/utils" - "go-wechat/vo" "log" "strings" ) diff --git a/tasks/watergroup/month.go b/tasks/watergroup/month.go index f3b8c81..09a9035 100644 --- a/tasks/watergroup/month.go +++ b/tasks/watergroup/month.go @@ -4,7 +4,7 @@ import ( "fmt" "go-wechat/client" "go-wechat/config" - "go-wechat/entity" + "go-wechat/model/entity" "go-wechat/service" "go-wechat/utils" "log" diff --git a/tasks/watergroup/week.go b/tasks/watergroup/week.go index b4902c0..084c21e 100644 --- a/tasks/watergroup/week.go +++ b/tasks/watergroup/week.go @@ -4,7 +4,7 @@ import ( "fmt" "go-wechat/client" "go-wechat/config" - "go-wechat/entity" + "go-wechat/model/entity" "go-wechat/service" "go-wechat/utils" "log" diff --git a/tasks/watergroup/year.go b/tasks/watergroup/year.go index 8ea50ba..130a6ca 100644 --- a/tasks/watergroup/year.go +++ b/tasks/watergroup/year.go @@ -4,7 +4,7 @@ import ( "fmt" "go-wechat/client" "go-wechat/config" - "go-wechat/entity" + "go-wechat/model/entity" "go-wechat/service" "go-wechat/utils" "log" diff --git a/tasks/watergroup/yesterday.go b/tasks/watergroup/yesterday.go index e6b3863..0142baf 100644 --- a/tasks/watergroup/yesterday.go +++ b/tasks/watergroup/yesterday.go @@ -4,7 +4,7 @@ import ( "fmt" "go-wechat/client" "go-wechat/config" - "go-wechat/entity" + "go-wechat/model/entity" "go-wechat/service" "go-wechat/utils" "log" diff --git a/tcpserver/parse.go b/tcpserver/parse.go index 8dd971c..cc58f43 100644 --- a/tcpserver/parse.go +++ b/tcpserver/parse.go @@ -4,7 +4,7 @@ import ( "encoding/json" "go-wechat/common/current" "go-wechat/config" - "go-wechat/model" + "go-wechat/model/dto" "go-wechat/types" "go-wechat/utils" "log" @@ -16,7 +16,7 @@ import ( // @description: 解析消息 // @param msg func parse(remoteAddr net.Addr, msg []byte) { - var m model.Message + var m dto.Message if err := json.Unmarshal(msg, &m); err != nil { log.Printf("[%s]消息解析失败: %v", remoteAddr, err) log.Printf("[%s]消息内容: %d -> %v", remoteAddr, len(msg), string(msg)) diff --git a/utils/leigod.go b/utils/leigod.go index c20f628..004b5fc 100644 --- a/utils/leigod.go +++ b/utils/leigod.go @@ -6,16 +6,16 @@ import ( "errors" "fmt" "github.com/go-resty/resty/v2" - "go-wechat/model" + "go-wechat/model/dto" "log" ) // LeiGod // @description: 雷神加速器相关接口 type LeiGod interface { - Login() error // 登录 - Info() (model.LeiGodUserInfoResp, error) // 获取用户信息 - Pause() error // 暂停加速 + Login() error // 登录 + Info() (dto.LeiGodUserInfoResp, error) // 获取用户信息 + Pause() error // 暂停加速 } type leiGod struct { @@ -59,7 +59,7 @@ func (l *leiGod) Login() (err error) { } pbs, _ := json.Marshal(param) - var loginResp model.Response[any] + var loginResp dto.Response[any] var resp *resty.Response res := resty.New() @@ -84,7 +84,7 @@ func (l *leiGod) Login() (err error) { return } - var loginInfo model.LeiGodLoginResp + var loginInfo dto.LeiGodLoginResp if err = json.Unmarshal(bs, &loginInfo); err != nil { return } @@ -100,7 +100,7 @@ func (l *leiGod) Login() (err error) { // @description: 获取用户信息 // @receiver l // @return string -func (l *leiGod) Info() (ui model.LeiGodUserInfoResp, err error) { +func (l *leiGod) Info() (ui dto.LeiGodUserInfoResp, err error) { // 组装参数 param := map[string]any{ "account_token": l.token, @@ -109,7 +109,7 @@ func (l *leiGod) Info() (ui model.LeiGodUserInfoResp, err error) { } pbs, _ := json.Marshal(param) - var userInfoResp model.Response[model.LeiGodUserInfoResp] + var userInfoResp dto.Response[dto.LeiGodUserInfoResp] var resp *resty.Response res := resty.New() @@ -145,7 +145,7 @@ func (l *leiGod) Pause() (err error) { } pbs, _ := json.Marshal(param) - var pauseResp model.Response[any] + var pauseResp dto.Response[any] var resp *resty.Response res := resty.New() diff --git a/utils/news.go b/utils/news.go index dcfc032..db2317c 100644 --- a/utils/news.go +++ b/utils/news.go @@ -3,7 +3,7 @@ package utils import ( "github.com/go-resty/resty/v2" "go-wechat/config" - "go-wechat/model" + "go-wechat/model/dto" "log" ) @@ -29,7 +29,7 @@ func NewsUtil() News { // @receiver news // @return records func (news) MorningPost() (records []string) { - var newsResp model.MorningPost + var newsResp dto.MorningPost res := resty.New() resp, err := res.R(). -- 2.45.2 From 9e8c3f5e6f57699f04382912b6bf65d7f7978fe5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=AF=BB=E6=AC=A2?= Date: Fri, 5 Jul 2024 09:43:34 +0800 Subject: [PATCH 2/3] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8DAI=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E6=95=B0=E6=8D=AE=E4=B8=BA=E7=A9=BA=E6=97=B6=E4=BC=9A?= =?UTF-8?q?=E4=B8=8B=E6=A0=87=E8=B6=8A=E7=95=8C=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin/plugins/ai.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/plugins/ai.go b/plugin/plugins/ai.go index b409e25..1edbb02 100644 --- a/plugin/plugins/ai.go +++ b/plugin/plugins/ai.go @@ -137,7 +137,7 @@ func AI(m *plugin.MessageContext) { } // 返回消息为空 - if resp.Choices[0].Message.Content == "" { + if len(resp.Choices) == 0 || resp.Choices[0].Message.Content == "" { utils.SendMessage(m.FromUser, m.GroupUser, "AI似乎抽风了,没有告诉我你需要的回答~", 0) return } -- 2.45.2 From f747bf5ead72c048a6e28d5a5857b04c12c11cb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=AF=BB=E6=AC=A2?= Date: Fri, 5 Jul 2024 09:44:07 +0800 Subject: [PATCH 3/3] =?UTF-8?q?:sparkles:=20=E6=96=B0=E5=A2=9E=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E7=BE=A4=E6=88=96=E8=80=85=E5=A5=BD=E5=8F=8B=E5=B7=B2?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=9A=84tokens=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model/entity/friend.go | 1 + plugin/plugins/ai.go | 3 +++ service/friend.go | 14 ++++++++++++++ 3 files changed, 18 insertions(+) diff --git a/model/entity/friend.go b/model/entity/friend.go index 884c27d..26796c7 100644 --- a/model/entity/friend.go +++ b/model/entity/friend.go @@ -22,6 +22,7 @@ type Friend struct { EnableNews bool `json:"enableNews" gorm:"type:tinyint(1) default 0 not null"` // 是否启用新闻 ClearMember int `json:"clearMember"` // 清理成员配置(多少天未活跃的) IsOk bool `json:"isOk" gorm:"type:tinyint(1) default 0 not null"` // 是否正常 + UsedTokens int `json:"usedTokens"` // 已使用的AI Token数量 } func (Friend) TableName() string { diff --git a/plugin/plugins/ai.go b/plugin/plugins/ai.go index 1edbb02..edfcc5c 100644 --- a/plugin/plugins/ai.go +++ b/plugin/plugins/ai.go @@ -142,6 +142,9 @@ func AI(m *plugin.MessageContext) { return } + // 异步更新一下已使用的AI次数 + go service.UpdateUsedAiTokens(m.FromUser, resp.Usage.TotalTokens) + // 保存一下AI 返回的消息,消息 Id 使用传入 Id 的负数 var replyMessage entity.Message replyMessage.MsgId = -m.MsgId diff --git a/service/friend.go b/service/friend.go index 1729f34..95be7af 100644 --- a/service/friend.go +++ b/service/friend.go @@ -4,6 +4,7 @@ import ( "go-wechat/client" "go-wechat/model/entity" "go-wechat/model/vo" + "gorm.io/gorm" "log" "strings" ) @@ -119,3 +120,16 @@ func updateLastActive(msg entity.Message) { log.Printf("更新群或者好友活跃时间失败, 错误信息: %v", err) } } + +// UpdateUsedAiTokens +// @description: 更新已使用的AI次数 +// @param wxId 微信好友或者群聊Id +// @param tokens 新增的tokens额度 +func UpdateUsedAiTokens(wxId string, tokens int) { + err := client.MySQL.Model(&entity.Friend{}). + Where("wxid = ?", wxId). + Update("`used_tokens`", gorm.Expr(" `used_tokens` + ?", tokens)).Error + if err != nil { + log.Printf("更新AI使用次数失败, 错误信息: %v", err) + } +} -- 2.45.2