feat: 添加查成绩功能

This commit is contained in:
lixiangwuxian
2024-10-09 00:50:42 +08:00
parent 6fee9f965c
commit f5e9b74c5a
4 changed files with 280 additions and 54 deletions

View File

@@ -8,19 +8,17 @@ import (
"git.lxtend.com/qqbot/service/scoresaber"
)
var scoresaberInstance *scoresaber.SSQuery
func init() {
scoresaberInstance = scoresaber.NewSSQuery()
handler.RegisterHandler("查ss", getScore)
handler.RegisterHandler("绑定ss", bindSS)
handler.RegisterHandler("解绑ss", unbindSS)
handler.RegisterHandler("最新ss", getRecentScore)
handler.RegisterHandler("最新ss", getMyRecentScore)
handler.RegisterHandler("最热ss", getRecentScore)
}
func getScore(msg model.Message) (reply model.Reply) {
return model.Reply{
ReplyMsg: scoresaberInstance.GetScore(strconv.Itoa(int(msg.UserId))),
ReplyMsg: scoresaber.SSQuery.GetScore(strconv.Itoa(int(msg.UserId))),
ReferOriginMsg: true,
FromMsg: msg,
}
@@ -28,7 +26,7 @@ func getScore(msg model.Message) (reply model.Reply) {
func bindSS(msg model.Message) (reply model.Reply) {
return model.Reply{
ReplyMsg: scoresaberInstance.BindSS(strconv.Itoa(int(msg.UserId)), msg.Msg[len("绑定ss "):]),
ReplyMsg: scoresaber.SSQuery.BindSS(strconv.Itoa(int(msg.UserId)), msg.Msg[len("绑定ss "):]),
ReferOriginMsg: true,
FromMsg: msg,
}
@@ -36,7 +34,7 @@ func bindSS(msg model.Message) (reply model.Reply) {
func unbindSS(msg model.Message) (reply model.Reply) {
return model.Reply{
ReplyMsg: scoresaberInstance.UnbindSS(strconv.Itoa(int(msg.UserId))),
ReplyMsg: scoresaber.SSQuery.UnbindSS(strconv.Itoa(int(msg.UserId))),
ReferOriginMsg: true,
FromMsg: msg,
}
@@ -44,10 +42,10 @@ func unbindSS(msg model.Message) (reply model.Reply) {
func getRecentScore(msg model.Message) (reply model.Reply) {
count := 1
if len(msg.Msg) > len("最ss ") {
if len(msg.Msg) > len("最ss ") {
var err error
count, err = strconv.Atoi(msg.Msg[len("最ss "):])
if err != nil {
count, err = strconv.Atoi(msg.Msg[len("最ss "):])
if err != nil || count <= 0 {
return model.Reply{
ReplyMsg: "",
ReferOriginMsg: true,
@@ -57,7 +55,10 @@ func getRecentScore(msg model.Message) (reply model.Reply) {
}
scoreMsg := ""
for _, v := range scoresaber.ScoresManager.GetRecentScores(count) {
scoreMsg += v.ToString() + "\n"
scoreMsg += v.ToString() + "\n\n"
}
if len(scoreMsg) > 0 {
scoreMsg = scoreMsg[:len(scoreMsg)-len("\n\n")]
}
return model.Reply{
ReplyMsg: scoreMsg,
@@ -65,3 +66,48 @@ func getRecentScore(msg model.Message) (reply model.Reply) {
FromMsg: msg,
}
}
func getMyRecentScore(msg model.Message) (reply model.Reply) {
count := 1
scoreMsg := ""
if len(msg.Msg) > len("最新ss ") {
var err error
count, err = strconv.Atoi(msg.Msg[len("最新ss "):])
if err != nil || count <= 0 {
return model.Reply{
ReplyMsg: "",
ReferOriginMsg: true,
FromMsg: msg,
}
}
}
var userName string
recordCount := 0
records, err := scoresaber.SSQuery.GetRecentScores(count, strconv.Itoa(int(msg.UserId)))
if err != nil {
return model.Reply{
ReplyMsg: err.Error(),
ReferOriginMsg: true,
FromMsg: msg,
}
}
for _, v := range records {
scoreMsg += v.ToString() + "\n\n"
userName = v.Name
recordCount++
}
if len(scoreMsg) > 0 {
scoreMsg = scoreMsg[:len(scoreMsg)-len("\n\n")] //去掉最后一个换行符
} else {
return model.Reply{
ReplyMsg: "无最近游戏记录",
ReferOriginMsg: true,
FromMsg: msg,
}
}
return model.Reply{
ReplyMsg: "玩家 " + userName + " 的" + strconv.Itoa(recordCount) + "条最近记录为:\n" + scoreMsg,
ReferOriginMsg: true,
FromMsg: msg,
}
}