mirror of
https://github.com/A-Minos/nonebot-plugin-tetris-stats.git
synced 2026-03-05 05:36:54 +08:00
🐛 修复排行榜 Users.League 的部分字段为 None 时 错误处理的错误
This commit is contained in:
@@ -24,7 +24,7 @@ from .constant import BASE_URL, GAME_TYPE, RANK_PERCENTILE
|
|||||||
from .model import IORank
|
from .model import IORank
|
||||||
from .schemas.league_all import FailedModel as LeagueAllFailed
|
from .schemas.league_all import FailedModel as LeagueAllFailed
|
||||||
from .schemas.league_all import LeagueAll
|
from .schemas.league_all import LeagueAll
|
||||||
from .schemas.league_all import User as LeagueAllUser
|
from .schemas.league_all import ValidUser as LeagueAllUser
|
||||||
from .schemas.user_info import FailedModel as InfoFailed
|
from .schemas.user_info import FailedModel as InfoFailed
|
||||||
from .schemas.user_info import (
|
from .schemas.user_info import (
|
||||||
NeverPlayedLeague,
|
NeverPlayedLeague,
|
||||||
@@ -216,7 +216,7 @@ async def get_io_rank_data() -> None:
|
|||||||
user = sort(users, field)
|
user = sort(users, field)
|
||||||
return asdict(User(ID=user.id, name=user.username)), field(user)
|
return asdict(User(ID=user.id, name=user.username)), field(user)
|
||||||
|
|
||||||
users = league_all.data.users
|
users = [i for i in league_all.data.users if isinstance(i, LeagueAllUser)]
|
||||||
rank_to_users: defaultdict[Rank, list[LeagueAllUser]] = defaultdict(list)
|
rank_to_users: defaultdict[Rank, list[LeagueAllUser]] = defaultdict(list)
|
||||||
for i in users:
|
for i in users:
|
||||||
rank_to_users[i.league.rank].append(i)
|
rank_to_users[i.league.rank].append(i)
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ from .base import SuccessModel as BaseSuccessModel
|
|||||||
|
|
||||||
class SuccessModel(BaseSuccessModel):
|
class SuccessModel(BaseSuccessModel):
|
||||||
class Data(BaseModel):
|
class Data(BaseModel):
|
||||||
class User(BaseModel):
|
class ValidUser(BaseModel):
|
||||||
class League(BaseModel):
|
class League(BaseModel):
|
||||||
gamesplayed: int
|
gamesplayed: int
|
||||||
gameswon: int
|
gameswon: int
|
||||||
@@ -30,10 +30,34 @@ class SuccessModel(BaseSuccessModel):
|
|||||||
verified: bool
|
verified: bool
|
||||||
country: str | None
|
country: str | None
|
||||||
|
|
||||||
users: list[User]
|
class InvalidUser(BaseModel):
|
||||||
|
class League(BaseModel):
|
||||||
|
gamesplayed: int
|
||||||
|
gameswon: int
|
||||||
|
rating: float
|
||||||
|
glicko: float | None
|
||||||
|
rd: float | None
|
||||||
|
rank: Rank
|
||||||
|
bestrank: Rank
|
||||||
|
apm: float | None
|
||||||
|
pps: float | None
|
||||||
|
vs: float | None
|
||||||
|
decaying: bool
|
||||||
|
|
||||||
|
id: str = Field(..., alias='_id')
|
||||||
|
username: str
|
||||||
|
role: str
|
||||||
|
xp: float
|
||||||
|
league: League
|
||||||
|
supporter: bool
|
||||||
|
verified: bool
|
||||||
|
country: str | None
|
||||||
|
|
||||||
|
users: list[ValidUser | InvalidUser]
|
||||||
|
|
||||||
data: Data
|
data: Data
|
||||||
|
|
||||||
|
|
||||||
LeagueAll = SuccessModel | FailedModel
|
LeagueAll = SuccessModel | FailedModel
|
||||||
User = SuccessModel.Data.User
|
ValidUser = SuccessModel.Data.ValidUser
|
||||||
|
InvalidUser = SuccessModel.Data.InvalidUser
|
||||||
|
|||||||
Reference in New Issue
Block a user