refactor: 优化 getMySSPic 函数,支持从消息中提取用户ID并处理头像为 nil 的情况,同时调整数据获取逻辑以提升代码灵活性
This commit is contained in:
@@ -17,7 +17,7 @@ import (
|
||||
)
|
||||
|
||||
func init() {
|
||||
handler.RegisterHandler("查ss", getSSProfile, constants.LEVEL_USER)
|
||||
handler.RegisterHandler("查ss", getMySSPic, constants.LEVEL_USER)
|
||||
handler.RegisterHelpInform("查ss", "scoresaber", " 查看您的最新分数")
|
||||
handler.RegisterHandler("绑定ss", bindSS, constants.LEVEL_USER)
|
||||
handler.RegisterHelpInform("绑定ss", "scoresaber", "绑定您的scoresaber账号")
|
||||
@@ -75,7 +75,7 @@ func ssPlusN(msg model.Message) (reply *model.Reply) {
|
||||
FromMsg: msg,
|
||||
}
|
||||
}
|
||||
var userInfo scoresaber.PlayerData
|
||||
var userInfo *scoresaber.PlayerData
|
||||
for attempts < maxRetries {
|
||||
err = nil
|
||||
userInfo, err = scoresaber.FetchPlayerData(userSSID)
|
||||
@@ -163,7 +163,7 @@ func ssPlusN(msg model.Message) (reply *model.Reply) {
|
||||
}
|
||||
}
|
||||
|
||||
func getSSProfile(msg model.Message) (reply *model.Reply) {
|
||||
func getMySSPic(msg model.Message) (reply *model.Reply) {
|
||||
var (
|
||||
resultStr string
|
||||
err error
|
||||
@@ -171,32 +171,24 @@ func getSSProfile(msg model.Message) (reply *model.Reply) {
|
||||
attempts = 0
|
||||
noUpdate = false
|
||||
)
|
||||
var ssId string
|
||||
var userIdStr string
|
||||
if len(msg.RawMsg) > len("查ss ") {
|
||||
ssId = strings.Split(msg.RawMsg, " ")[1]
|
||||
userIdStr = strings.Split(msg.RawMsg, " ")[1]
|
||||
noUpdate = true
|
||||
} else {
|
||||
userIdStr = strconv.Itoa(int(msg.UserId))
|
||||
}
|
||||
|
||||
userIdStr := strconv.Itoa(int(msg.UserId))
|
||||
var data *scoresaber.PlayerDataLite
|
||||
var lastData *scoresaber.PlayerDataLite
|
||||
for attempts < maxRetries {
|
||||
err = nil
|
||||
if ssId == "" {
|
||||
ssId, err = scoresaber.GetSSID(userIdStr)
|
||||
}
|
||||
if err != nil {
|
||||
return &model.Reply{
|
||||
ReplyMsg: "您未绑定ss账号,输入\"绑定ss [ssId]\"绑定(ssId为您的scoresaber主页链接中的数字部分)",
|
||||
ReferOriginMsg: true,
|
||||
FromMsg: msg,
|
||||
}
|
||||
}
|
||||
if !noUpdate {
|
||||
resultStr, err = scoresaber.SSQuery.GetScore(ssId)
|
||||
if noUpdate {
|
||||
data, err = scoresaber.SSQuery.GetScoreWithoutUpdate(userIdStr)
|
||||
} else {
|
||||
resultStr, err = scoresaber.SSQuery.GetScoreWithoutUpdate(ssId)
|
||||
data, lastData, err = scoresaber.SSQuery.GetScore(userIdStr)
|
||||
}
|
||||
if err == nil {
|
||||
break
|
||||
break // 成功时退出循环
|
||||
}
|
||||
attempts++
|
||||
log.Printf("获取分数时出错,第 %d 次重试: %v", attempts, err)
|
||||
@@ -204,11 +196,27 @@ func getSSProfile(msg model.Message) (reply *model.Reply) {
|
||||
|
||||
// 如果所有尝试都失败,返回适当的错误消息
|
||||
if err != nil {
|
||||
resultStr = "获取您的分数时出现问题,请稍后重试。" + err.Error()
|
||||
return &model.Reply{
|
||||
ReplyMsg: "获取您的分数时出现问题,请稍后重试。" + err.Error(),
|
||||
ReferOriginMsg: true,
|
||||
FromMsg: msg,
|
||||
}
|
||||
}
|
||||
if lastData != nil {
|
||||
resultStr = data.LastDiffToImage(*lastData)
|
||||
} else {
|
||||
resultStr = data.LastDiffToImage(*data)
|
||||
}
|
||||
|
||||
imageMsg := message.ImageMessage{
|
||||
Type: "image",
|
||||
Data: message.ImageMessageData{
|
||||
File: resultStr,
|
||||
},
|
||||
}
|
||||
|
||||
return &model.Reply{
|
||||
ReplyMsg: resultStr,
|
||||
ReplyMsg: imageMsg.ToCQString(),
|
||||
ReferOriginMsg: true,
|
||||
FromMsg: msg,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user