diff --git a/handler/scoresaber/score.go b/handler/scoresaber/score.go index 0173e05..ad15a76 100644 --- a/handler/scoresaber/score.go +++ b/handler/scoresaber/score.go @@ -2,13 +2,17 @@ package scoresaber import ( "log" + "os" "strconv" "strings" + "sync" "git.lxtend.com/qqbot/constants" "git.lxtend.com/qqbot/handler" + "git.lxtend.com/qqbot/message" "git.lxtend.com/qqbot/model" "git.lxtend.com/qqbot/service/scoresaber" + "git.lxtend.com/qqbot/util" ) func init() { @@ -153,13 +157,40 @@ func getMyRecentScore(msg model.Message) (reply model.Reply) { FromMsg: msg, } } - for _, v := range records { - scoreMsg += v.ToString() + "\n\n" - userName = v.Name + coverImageMap := make(map[string]string) + wg := sync.WaitGroup{} + for _, record := range records { + coverImageMap[record.SongHash] = record.CoverImage + wg.Add(1) + go func(songHash string) { + defer wg.Done() + //文件存在则跳过 + if _, err := os.Stat(util.GetResizedIamgePathByOrgPath(util.GenTempFilePath(songHash + ".jpeg"))); err == nil { + return + } + util.DownloadFile(coverImageMap[songHash], util.GenTempFilePath(songHash+".jpeg")) + newPath, err := util.ResizeImageByMaxHeight(util.GenTempFilePath(songHash+".jpeg"), 20) + os.Remove(util.GenTempFilePath(songHash + ".jpeg")) + if err != nil { + log.Printf("缩放图片失败: %v", err) + } + coverImageMap[songHash] = newPath + }(record.SongHash) + } + wg.Wait() + for _, record := range records { + imageMsg := message.ImageMessage{ + Type: "image", + Data: message.ImageMessageData{ + File: util.GetResizedIamgePathByOrgPath(util.GenTempFilePath(record.SongHash + ".jpeg")), + }, + } + scoreMsg += imageMsg.ToCQString() + record.ToString() + "\n" + userName = record.Name recordCount++ } if len(scoreMsg) > 0 { - scoreMsg = scoreMsg[:len(scoreMsg)-len("\n\n")] //去掉最后一个换行符 + scoreMsg = scoreMsg[:len(scoreMsg)-len("\n")] //去掉最后一个换行符 } else { return model.Reply{ ReplyMsg: "无最近游戏记录",