fix: 优化 blPlus 和 ssPlusN 函数中的提示信息逻辑,合并重复代码,确保对非Top1玩家的提示更加清晰

This commit is contained in:
lixiangwuxian 2025-05-03 23:57:05 +08:00
parent a08a1da3a4
commit b5488ac165
2 changed files with 34 additions and 32 deletions

View File

@ -108,23 +108,24 @@ func blPlus(msg model.Message) (reply *model.Reply) {
} else {
resultStr.WriteString(fmt.Sprintf("注意:你最多只需要提升%d名就是%s区Top1了。\n", userInfo.CountryRank-1, userInfo.Country))
}
}
//寻找leaderboard中排名为userInfo.CountryRank-N的玩家
var targetPlayer beatleader.PlayerDataLite
targetRank := userInfo.CountryRank - N
if targetRank < 0 {
targetRank = 1
}
for _, player := range leaderboard {
if player.CountryRank == targetRank {
targetPlayer = player
break
} else if userInfo.CountryRank != 1 {
//寻找leaderboard中排名为userInfo.CountryRank-N的玩家
var targetPlayer beatleader.PlayerDataLite
targetRank := userInfo.CountryRank - N
if targetRank < 0 {
targetRank = 1
}
for _, player := range leaderboard {
if player.CountryRank == targetRank {
targetPlayer = player
break
}
}
if isPlus {
resultStr.WriteString(fmt.Sprintf("您只需要再打出%.2fpp就能超越%s达到%s区第%d名。", targetPlayer.PP-userInfo.PP, targetPlayer.Name, userInfo.Country, targetPlayer.CountryRank))
} else {
resultStr.WriteString(fmt.Sprintf("%s区的第%d名是%s对方只需要再打出%.2fpp就能超过你。", userInfo.Country, targetPlayer.CountryRank, targetPlayer.Name, userInfo.PP-targetPlayer.PP))
}
}
if isPlus {
resultStr.WriteString(fmt.Sprintf("您只需要再打出%.2fpp就能超越%s达到%s区第%d名。", targetPlayer.PP-userInfo.PP, targetPlayer.Name, userInfo.Country, targetPlayer.CountryRank))
} else {
resultStr.WriteString(fmt.Sprintf("%s区的第%d名是%s对方只需要再打出%.2fpp就能超过你。", userInfo.Country, targetPlayer.CountryRank, targetPlayer.Name, userInfo.PP-targetPlayer.PP))
}
return &model.Reply{
ReplyMsg: resultStr.String(),

View File

@ -106,23 +106,24 @@ func ssPlusN(msg model.Message) (reply *model.Reply) {
} else {
resultStr.WriteString(fmt.Sprintf("注意:你最多只需要提升%d名就是%s区Top1了。\n", userInfo.CountryRank-1, userInfo.Country))
}
}
//寻找leaderboard中排名为userInfo.CountryRank-N的玩家
var targetPlayer scoresaber.PlayerData
targetRank := userInfo.CountryRank - N
if targetRank < 0 {
targetRank = 1
}
for _, player := range leaderboard.Players {
if player.CountryRank == targetRank {
targetPlayer = player
break
} else if userInfo.CountryRank != 1 {
//寻找leaderboard中排名为userInfo.CountryRank-N的玩家
var targetPlayer scoresaber.PlayerData
targetRank := userInfo.CountryRank - N
if targetRank < 0 {
targetRank = 1
}
for _, player := range leaderboard.Players {
if player.CountryRank == targetRank {
targetPlayer = player
break
}
}
if isPlus {
resultStr.WriteString(fmt.Sprintf("您只需要再打出%.2fpp就能超越%s达到%s区第%d名。", targetPlayer.PP-userInfo.PP, targetPlayer.Name, userInfo.Country, targetPlayer.CountryRank))
} else {
resultStr.WriteString(fmt.Sprintf("%s区的第%d名是%s对方只需要再打出%.2fpp就能超过你。", userInfo.Country, targetPlayer.CountryRank, targetPlayer.Name, userInfo.PP-targetPlayer.PP))
}
}
if isPlus {
resultStr.WriteString(fmt.Sprintf("您只需要再打出%.2fpp就能超越%s达到%s区第%d名。", targetPlayer.PP-userInfo.PP, targetPlayer.Name, userInfo.Country, targetPlayer.CountryRank))
} else {
resultStr.WriteString(fmt.Sprintf("%s区的第%d名是%s对方只需要再打出%.2fpp就能超过你。", userInfo.Country, targetPlayer.CountryRank, targetPlayer.Name, userInfo.PP-targetPlayer.PP))
}
return &model.Reply{
ReplyMsg: resultStr.String(),