🐛 修爆炸 (#528)

* 🐛 修爆炸

* 🐛 修复类型错误
This commit is contained in:
呵呵です
2024-12-21 01:41:58 +08:00
committed by GitHub
parent d4b690f682
commit ce7bce6e20
3 changed files with 24 additions and 7 deletions

View File

@@ -7,7 +7,7 @@ from ...typing import Rank, ValidRank
from ..base import ArCounts, FailedModel, P, SuccessModel
class League(BaseModel):
class BaseLeague(BaseModel):
gamesplayed: int
gameswon: int
tr: float
@@ -16,13 +16,21 @@ class League(BaseModel):
bestrank: ValidRank
glicko: float
rd: float
apm: float
pps: float
vs: float
decaying: bool
class Entry(BaseModel):
class InvalidLeague(BaseLeague):
apm: None
vs: None
class League(BaseLeague):
apm: float
vs: float
class BaseEntry(BaseModel):
id: str = Field(..., alias='_id')
username: str
role: Literal['anon', 'user', 'bot', 'halfmod', 'mod', 'admin', 'sysop']
@@ -30,7 +38,6 @@ class Entry(BaseModel):
xp: float
country: str | None = None
supporter: bool | None = None
league: League
gamesplayed: int
gameswon: int
gametime: float
@@ -39,8 +46,16 @@ class Entry(BaseModel):
p: P
class InvalidEntry(BaseEntry):
league: InvalidLeague
class Entry(BaseEntry):
league: League
class Data(BaseModel):
entries: list[Entry]
entries: list[Entry | InvalidEntry]
class BySuccessModel(SuccessModel):

View File

@@ -14,6 +14,7 @@ from . import command
from .api.leaderboards import by
from .api.schemas.base import P
from .api.schemas.leaderboards import Parameter
from .api.schemas.leaderboards.by import Entry
from .constant import GAME_TYPE
command.add(
@@ -84,6 +85,7 @@ async def _(
join_at=None,
)
for i in league.data.entries
if isinstance(i, Entry)
],
),
)

View File

@@ -95,7 +95,7 @@ async def get_tetra_league_data() -> None:
players: list[Entry] = []
for result in results:
players.extend(result.data.entries)
players.extend([i for i in result.data.entries if isinstance(i, Entry)])
players.sort(key=lambda x: x.league.tr, reverse=True)
rank_player_mapping: defaultdict[Rank, list[Entry]] = defaultdict(list)