diff --git a/model/entity/friend.go b/model/entity/friend.go index 884c27d5..26796c7a 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 1edbb02f..edfcc5c8 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 1729f341..95be7af7 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) + } +}