fix: 优化绑定功能的错误提示信息,增加了对用户输入的详细说明,同时在获取玩家数据时添加了重试机制以提高稳定性
This commit is contained in:
parent
f87922883e
commit
afd80bb1bf
@ -82,36 +82,6 @@ func unbindBL(msg model.Message) (reply model.Reply) {
|
||||
}
|
||||
}
|
||||
|
||||
// func getRecentScore(msg model.Message) (reply model.Reply) {
|
||||
// count := 1
|
||||
// if len(msg.RawMsg) > len("最热bl ") {
|
||||
// var err error
|
||||
// count, err = strconv.Atoi(msg.RawMsg[len("最热bl "):])
|
||||
// if err != nil || count <= 0 {
|
||||
// return model.Reply{
|
||||
// ReplyMsg: "",
|
||||
// ReferOriginMsg: true,
|
||||
// FromMsg: msg,
|
||||
// }
|
||||
// }
|
||||
// if count > 10 {
|
||||
// count = 10
|
||||
// }
|
||||
// }
|
||||
// scoreMsg := ""
|
||||
// for _, v := range beatleader.BlScoresManager.GetRecentScores(count, " WHERE country = 'CN' ") {
|
||||
// scoreMsg += v.ToString() + "\n\n"
|
||||
// }
|
||||
// if len(scoreMsg) > 0 {
|
||||
// scoreMsg = scoreMsg[:len(scoreMsg)-len("\n\n")]
|
||||
// }
|
||||
// return model.Reply{
|
||||
// ReplyMsg: scoreMsg,
|
||||
// ReferOriginMsg: true,
|
||||
// FromMsg: msg,
|
||||
// }
|
||||
// }
|
||||
|
||||
func getMyRecentScore(msg model.Message) (reply model.Reply) {
|
||||
count := 1
|
||||
scoreMsg := ""
|
||||
|
@ -51,7 +51,7 @@ func getSSProfile(msg model.Message) (reply model.Reply) {
|
||||
}
|
||||
if err != nil {
|
||||
return model.Reply{
|
||||
ReplyMsg: "您未绑定ss账号,输入\"绑定ss [ssId]\"绑定",
|
||||
ReplyMsg: "您未绑定ss账号,输入\"绑定ss [ssId]\"绑定(ssId为您的scoresaber主页链接中的数字部分)",
|
||||
ReferOriginMsg: true,
|
||||
FromMsg: msg,
|
||||
}
|
||||
|
@ -81,21 +81,32 @@ func (bl *blQuery) BindBL(qqId string, blId string) (reply string) {
|
||||
defer tx.Rollback()
|
||||
// blId为数字
|
||||
if _, isNum := strconv.Atoi(blId); isNum != nil {
|
||||
return "blId格式错误,应当为一串数字(大部分情况下是你的steamID)"
|
||||
return "blId格式错误,应当为一串数字(是您的beatleader主页链接中的末尾数字部分,一般和您的steamID相同)"
|
||||
}
|
||||
data, err := FetchPlayerData(blId)
|
||||
if data == nil {
|
||||
if err != nil {
|
||||
return "未找到玩家,请检查ID后重试:" + err.Error()
|
||||
return "请求出错,报错如下,如果确定命令没问题可以重新试试:" + err.Error()
|
||||
}
|
||||
return "未找到玩家,请检查ID后重试"
|
||||
}
|
||||
//去重
|
||||
if rows, err := tx.Query("SELECT * FROM ssBind WHERE qqid = ?", qqId); err == nil {
|
||||
if rows, err := tx.Query("SELECT ssid FROM ssBind WHERE qqid = ?", qqId); err == nil {
|
||||
if rows.Next() {
|
||||
return "您已绑定过bl账号,请先输入\"解绑bl\"解绑"
|
||||
var currentBlId string
|
||||
err := rows.Scan(¤tBlId)
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
}
|
||||
rows.Close()
|
||||
// 获取当前绑定账号的信息
|
||||
if currentData, err := FetchPlayerData(currentBlId); err == nil && currentData != nil {
|
||||
return fmt.Sprintf("您已绑定至bl账号:%s,请先输入\"解绑bl\"解绑", currentData.Name)
|
||||
}
|
||||
return "您已绑定过bl账号,请先输入\"解绑bl\"解绑"
|
||||
} else {
|
||||
rows.Close()
|
||||
}
|
||||
}
|
||||
if rows, err := tx.Query("SELECT * FROM ssBind WHERE ssid = ?", blId); err == nil {
|
||||
if rows.Next() {
|
||||
@ -111,7 +122,7 @@ func (bl *blQuery) BindBL(qqId string, blId string) (reply string) {
|
||||
if err != nil {
|
||||
return "无法提交事务"
|
||||
}
|
||||
return "和用户名为 " + data.Name + " 的用户绑定成功,输入\"查bl\"查看个人数据"
|
||||
return "和用户名为 " + data.Name + " 的用户绑定成功,同时也绑定了您的scoresaber账号。输入\"查bl\"查看个人数据"
|
||||
}
|
||||
|
||||
func (bl *blQuery) UnbindBL(qqId string) (reply string) {
|
||||
|
@ -34,9 +34,12 @@ func FetchPlayerData(blID string) (*PlayerData, error) {
|
||||
req.Header.Set("Cache-Control", "no-cache")
|
||||
req.Header.Set("TE", "trailers")
|
||||
|
||||
// 发送请求
|
||||
// 发送请求,失败则重试至多3次
|
||||
client := &http.Client{}
|
||||
resp, err := client.Do(req)
|
||||
for i := 0; i < 3 && err != nil; i++ {
|
||||
resp, err = client.Do(req)
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -87,21 +87,32 @@ func (ss *ssQuery) BindSS(qqId string, ssId string) (reply string) {
|
||||
defer tx.Rollback()
|
||||
// ssId为数字
|
||||
if _, isNum := strconv.Atoi(ssId); isNum != nil {
|
||||
return "ssId格式错误,应当为一串数字(大部分情况下是你的steamID)"
|
||||
return "ssId格式错误,应当为一串数字(是您的scoresaber主页链接中的末尾数字部分,一般和您的steamID相同)"
|
||||
}
|
||||
data, err := FetchPlayerData(ssId)
|
||||
if data == nil {
|
||||
if err != nil {
|
||||
return "未找到玩家,请检查ID后重试:" + err.Error()
|
||||
return "请求出错,报错如下,如果确定命令没问题可以重新试试:" + err.Error()
|
||||
}
|
||||
return "未找到玩家,请检查ID后重试"
|
||||
}
|
||||
//去重
|
||||
if rows, err := tx.Query("SELECT * FROM ssBind WHERE qqid = ?", qqId); err == nil {
|
||||
if rows, err := tx.Query("SELECT ssid FROM ssBind WHERE qqid = ?", qqId); err == nil {
|
||||
if rows.Next() {
|
||||
return "您已绑定过ss账号,请先输入\"解绑ss\"解绑"
|
||||
var currentSsId string
|
||||
err := rows.Scan(¤tSsId)
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
}
|
||||
rows.Close()
|
||||
// 获取当前绑定账号的信息
|
||||
if currentData, err := FetchPlayerData(currentSsId); err == nil && currentData != nil {
|
||||
return fmt.Sprintf("您已绑定至ss账号:%s,请先输入\"解绑ss\"解绑", currentData.Name)
|
||||
}
|
||||
return "您已绑定过ss账号,请先输入\"解绑ss\"解绑"
|
||||
} else {
|
||||
rows.Close()
|
||||
}
|
||||
}
|
||||
// 检查是否已绑定
|
||||
if rows, err := tx.Query("SELECT * FROM ssBind WHERE ssid = ?", ssId); err == nil {
|
||||
@ -118,7 +129,7 @@ func (ss *ssQuery) BindSS(qqId string, ssId string) (reply string) {
|
||||
if err != nil {
|
||||
return "无法提交事务"
|
||||
}
|
||||
return "和用户名为 " + data.Name + " 的用户绑定成功,输入\"查ss\"查看个人数据"
|
||||
return "和用户名为 " + data.Name + " 的用户绑定成功,同时也绑定了您的beatleader账号。输入\"查ss\"查看个人数据"
|
||||
}
|
||||
|
||||
func (ss *ssQuery) UnbindSS(qqId string) (reply string) {
|
||||
|
@ -34,9 +34,12 @@ func FetchPlayerData(ssID string) (*PlayerData, error) {
|
||||
req.Header.Set("Cache-Control", "no-cache")
|
||||
req.Header.Set("TE", "trailers")
|
||||
|
||||
// 发送请求
|
||||
// 发送请求,失败则重试至多3次
|
||||
client := &http.Client{}
|
||||
resp, err := client.Do(req)
|
||||
for i := 0; i < 3 && err != nil; i++ {
|
||||
resp, err = client.Do(req)
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user