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) {
|
func getMyRecentScore(msg model.Message) (reply model.Reply) {
|
||||||
count := 1
|
count := 1
|
||||||
scoreMsg := ""
|
scoreMsg := ""
|
||||||
|
@ -51,7 +51,7 @@ func getSSProfile(msg model.Message) (reply model.Reply) {
|
|||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return model.Reply{
|
return model.Reply{
|
||||||
ReplyMsg: "您未绑定ss账号,输入\"绑定ss [ssId]\"绑定",
|
ReplyMsg: "您未绑定ss账号,输入\"绑定ss [ssId]\"绑定(ssId为您的scoresaber主页链接中的数字部分)",
|
||||||
ReferOriginMsg: true,
|
ReferOriginMsg: true,
|
||||||
FromMsg: msg,
|
FromMsg: msg,
|
||||||
}
|
}
|
||||||
|
@ -81,21 +81,32 @@ func (bl *blQuery) BindBL(qqId string, blId string) (reply string) {
|
|||||||
defer tx.Rollback()
|
defer tx.Rollback()
|
||||||
// blId为数字
|
// blId为数字
|
||||||
if _, isNum := strconv.Atoi(blId); isNum != nil {
|
if _, isNum := strconv.Atoi(blId); isNum != nil {
|
||||||
return "blId格式错误,应当为一串数字(大部分情况下是你的steamID)"
|
return "blId格式错误,应当为一串数字(是您的beatleader主页链接中的末尾数字部分,一般和您的steamID相同)"
|
||||||
}
|
}
|
||||||
data, err := FetchPlayerData(blId)
|
data, err := FetchPlayerData(blId)
|
||||||
if data == nil {
|
if data == nil {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "未找到玩家,请检查ID后重试:" + err.Error()
|
return "请求出错,报错如下,如果确定命令没问题可以重新试试:" + err.Error()
|
||||||
}
|
}
|
||||||
return "未找到玩家,请检查ID后重试"
|
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() {
|
if rows.Next() {
|
||||||
|
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\"解绑"
|
return "您已绑定过bl账号,请先输入\"解绑bl\"解绑"
|
||||||
|
} else {
|
||||||
|
rows.Close()
|
||||||
}
|
}
|
||||||
rows.Close()
|
|
||||||
}
|
}
|
||||||
if rows, err := tx.Query("SELECT * FROM ssBind WHERE ssid = ?", blId); err == nil {
|
if rows, err := tx.Query("SELECT * FROM ssBind WHERE ssid = ?", blId); err == nil {
|
||||||
if rows.Next() {
|
if rows.Next() {
|
||||||
@ -111,7 +122,7 @@ func (bl *blQuery) BindBL(qqId string, blId string) (reply string) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return "无法提交事务"
|
return "无法提交事务"
|
||||||
}
|
}
|
||||||
return "和用户名为 " + data.Name + " 的用户绑定成功,输入\"查bl\"查看个人数据"
|
return "和用户名为 " + data.Name + " 的用户绑定成功,同时也绑定了您的scoresaber账号。输入\"查bl\"查看个人数据"
|
||||||
}
|
}
|
||||||
|
|
||||||
func (bl *blQuery) UnbindBL(qqId string) (reply string) {
|
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("Cache-Control", "no-cache")
|
||||||
req.Header.Set("TE", "trailers")
|
req.Header.Set("TE", "trailers")
|
||||||
|
|
||||||
// 发送请求
|
// 发送请求,失败则重试至多3次
|
||||||
client := &http.Client{}
|
client := &http.Client{}
|
||||||
resp, err := client.Do(req)
|
resp, err := client.Do(req)
|
||||||
|
for i := 0; i < 3 && err != nil; i++ {
|
||||||
|
resp, err = client.Do(req)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -87,21 +87,32 @@ func (ss *ssQuery) BindSS(qqId string, ssId string) (reply string) {
|
|||||||
defer tx.Rollback()
|
defer tx.Rollback()
|
||||||
// ssId为数字
|
// ssId为数字
|
||||||
if _, isNum := strconv.Atoi(ssId); isNum != nil {
|
if _, isNum := strconv.Atoi(ssId); isNum != nil {
|
||||||
return "ssId格式错误,应当为一串数字(大部分情况下是你的steamID)"
|
return "ssId格式错误,应当为一串数字(是您的scoresaber主页链接中的末尾数字部分,一般和您的steamID相同)"
|
||||||
}
|
}
|
||||||
data, err := FetchPlayerData(ssId)
|
data, err := FetchPlayerData(ssId)
|
||||||
if data == nil {
|
if data == nil {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "未找到玩家,请检查ID后重试:" + err.Error()
|
return "请求出错,报错如下,如果确定命令没问题可以重新试试:" + err.Error()
|
||||||
}
|
}
|
||||||
return "未找到玩家,请检查ID后重试"
|
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() {
|
if rows.Next() {
|
||||||
|
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\"解绑"
|
return "您已绑定过ss账号,请先输入\"解绑ss\"解绑"
|
||||||
|
} else {
|
||||||
|
rows.Close()
|
||||||
}
|
}
|
||||||
rows.Close()
|
|
||||||
}
|
}
|
||||||
// 检查是否已绑定
|
// 检查是否已绑定
|
||||||
if rows, err := tx.Query("SELECT * FROM ssBind WHERE ssid = ?", ssId); err == nil {
|
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 {
|
if err != nil {
|
||||||
return "无法提交事务"
|
return "无法提交事务"
|
||||||
}
|
}
|
||||||
return "和用户名为 " + data.Name + " 的用户绑定成功,输入\"查ss\"查看个人数据"
|
return "和用户名为 " + data.Name + " 的用户绑定成功,同时也绑定了您的beatleader账号。输入\"查ss\"查看个人数据"
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ss *ssQuery) UnbindSS(qqId string) (reply string) {
|
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("Cache-Control", "no-cache")
|
||||||
req.Header.Set("TE", "trailers")
|
req.Header.Set("TE", "trailers")
|
||||||
|
|
||||||
// 发送请求
|
// 发送请求,失败则重试至多3次
|
||||||
client := &http.Client{}
|
client := &http.Client{}
|
||||||
resp, err := client.Do(req)
|
resp, err := client.Do(req)
|
||||||
|
for i := 0; i < 3 && err != nil; i++ {
|
||||||
|
resp, err = client.Do(req)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user