feat: 在 scoresaber 模块中添加 ss+n 命令,允许用户查询提升排名所需的分数,并优化 FetchPlayerData 函数的返回类型以提高错误处理能力

This commit is contained in:
lixiangwuxian
2025-03-31 02:28:06 +08:00
parent cfe6c177e1
commit 6454b55a90
3 changed files with 219 additions and 13 deletions

View File

@@ -90,7 +90,7 @@ func (ss *ssQuery) BindSS(qqId string, ssId string) (reply string) {
return "ssId格式错误,应当为一串数字(是您的scoresaber主页链接中的末尾数字部分,一般和您的steamID相同)"
}
data, err := FetchPlayerData(ssId)
if data == nil {
if data.ID == "" {
if err != nil {
return "请求出错,报错如下,如果确定命令没问题可以重新试试:" + err.Error()
}
@@ -106,7 +106,7 @@ func (ss *ssQuery) BindSS(qqId string, ssId string) (reply string) {
}
rows.Close()
// 获取当前绑定账号的信息
if currentData, err := FetchPlayerData(currentSsId); err == nil && currentData != nil {
if currentData, err := FetchPlayerData(currentSsId); err == nil && currentData.ID != "" {
return fmt.Sprintf("您已绑定至ss账号%s,请先输入\"解绑ss\"解绑", currentData.Name)
}
return "您已绑定过ss账号,请先输入\"解绑ss\"解绑"
@@ -167,10 +167,12 @@ func (ss *ssQuery) GetScore(ssId string) (reply string, err error) {
// 查询玩家数据
data, err := FetchPlayerData(ssId)
if data == nil {
if err != nil {
return "查询出错,报错如下" + err.Error(), errors.New("查询出错,报错如下" + err.Error())
}
if data.ID == "" {
return "未找到玩家,请检查ID后重试", errors.New("未找到玩家,请检查ID后重试")
}
// 构建 PlayerDataLite 结构体
dataLite := PlayerDataLite{
ID: data.ID,
@@ -232,9 +234,12 @@ func (ss *ssQuery) GetScore(ssId string) (reply string, err error) {
func (ss *ssQuery) GetScoreWithoutUpdate(ssId string) (reply string, err error) {
// 查询玩家数据
data, err := FetchPlayerData(ssId)
if data == nil {
if err != nil {
return "查询出错,报错如下" + err.Error(), errors.New("查询出错,报错如下" + err.Error())
}
if data.ID == "" {
return "未找到玩家,请检查ID后重试", errors.New("未找到玩家,请检查ID后重试")
}
// 返回当前数据的字符串表示
return data.ToString(), nil
}