57 lines
1.6 KiB
Go
57 lines
1.6 KiB
Go
|
package app
|
|||
|
|
|||
|
import (
|
|||
|
"fmt"
|
|||
|
"github.com/gin-gonic/gin"
|
|||
|
"go-wechat/model/vo"
|
|||
|
"go-wechat/service"
|
|||
|
"go-wechat/utils"
|
|||
|
"log"
|
|||
|
"net/http"
|
|||
|
)
|
|||
|
|
|||
|
// SendAiSummary
|
|||
|
// @description: 发送AI摘要
|
|||
|
// @param ctx
|
|||
|
func SendAiSummary(ctx *gin.Context) {
|
|||
|
// 获取群Id
|
|||
|
groupId := ctx.Query("id")
|
|||
|
if groupId == "" {
|
|||
|
ctx.String(http.StatusForbidden, "群Id不能为空")
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// 取出群名称
|
|||
|
groupInfo, err := service.GetFriendInfoById(groupId)
|
|||
|
if err != nil {
|
|||
|
ctx.String(http.StatusInternalServerError, "获取群信息失败")
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// 获取对话记录
|
|||
|
var records []vo.TextMessageItem
|
|||
|
if records, err = service.GetTextMessagesById(groupId); err != nil {
|
|||
|
log.Printf("获取群[%s]对话记录失败, 错误信息: %v", groupId, err)
|
|||
|
ctx.String(http.StatusInternalServerError, "获取群对话记录失败")
|
|||
|
return
|
|||
|
}
|
|||
|
if len(records) < 10 {
|
|||
|
ctx.String(http.StatusForbidden, "群对话记录不足10条,建议自己看")
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// 组装对话记录为字符串
|
|||
|
var replyMsg string
|
|||
|
replyMsg, err = utils.GetAiSummary(groupInfo.Nickname, records)
|
|||
|
if err != nil {
|
|||
|
log.Printf("群聊记录总结失败: %v", err.Error())
|
|||
|
ctx.String(http.StatusInternalServerError, "群聊消息总结失败,错误信息: "+err.Error())
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
replyMsg = fmt.Sprintf("#昨日消息总结\n又是一天过去了,让我们一起来看看昨儿群友们都聊了什么有趣的话题吧~\n\n%s", replyMsg)
|
|||
|
log.Printf("群[%s]对话记录总结成功,总结内容: %s", groupInfo.Nickname, replyMsg)
|
|||
|
_ = utils.SendMessage(groupId, "", replyMsg, 0)
|
|||
|
ctx.String(http.StatusOK, "操作完成")
|
|||
|
}
|