🐛 修复被 ban 的爆炸 (#510)

This commit is contained in:
呵呵です
2024-10-29 00:43:38 +08:00
committed by GitHub
parent dbde1181ce
commit d4e91c8521
3 changed files with 10 additions and 4 deletions

View File

@@ -122,5 +122,9 @@ class RatedData(BaseData):
percentile_rank: str percentile_rank: str
class InvalidData(BaseModel):
"""I don't know what osk is doing, but the return value is an empty dictionary"""
class LeagueSuccessModel(SuccessModel): class LeagueSuccessModel(SuccessModel):
data: NeverPlayedData | NeverRatedData | RatedData data: NeverPlayedData | NeverRatedData | RatedData | InvalidData

View File

@@ -6,7 +6,7 @@ from zoneinfo import ZoneInfo
from ....utils.exception import FallbackError from ....utils.exception import FallbackError
from ....utils.render.schemas.tetrio.user.base import TetraLeagueHistoryData from ....utils.render.schemas.tetrio.user.base import TetraLeagueHistoryData
from ..api.schemas.labs.leagueflow import Empty, LeagueFlowSuccess from ..api.schemas.labs.leagueflow import Empty, LeagueFlowSuccess
from ..api.schemas.summaries.league import LeagueSuccessModel, NeverPlayedData, NeverRatedData, RatedData from ..api.schemas.summaries.league import InvalidData, LeagueSuccessModel, NeverPlayedData, NeverRatedData, RatedData
def flow_to_history( def flow_to_history(
@@ -47,6 +47,8 @@ def get_league_data(
user_info: LeagueSuccessModel, league_type: type[L] | None = None user_info: LeagueSuccessModel, league_type: type[L] | None = None
) -> L | NeverPlayedData | NeverRatedData | RatedData: ) -> L | NeverPlayedData | NeverRatedData | RatedData:
league = user_info.data league = user_info.data
if isinstance(league, InvalidData):
raise FallbackError
if league_type is None: if league_type is None:
return league return league
if isinstance(league, league_type): if isinstance(league, league_type):

View File

@@ -22,7 +22,7 @@ from ....utils.render.schemas.tetrio.user.info_v2 import (
) )
from ....utils.screenshot import screenshot from ....utils.screenshot import screenshot
from ..api import Player from ..api import Player
from ..api.schemas.summaries.league import NeverPlayedData, NeverRatedData from ..api.schemas.summaries.league import InvalidData, NeverPlayedData, NeverRatedData
from .tools import flow_to_history, handling_special_value from .tools import flow_to_history, handling_special_value
@@ -111,7 +111,7 @@ async def make_query_image_v2(player: Player) -> bytes:
decaying=league.data.decaying, decaying=league.data.decaying,
history=history, history=history,
) )
if not isinstance(league.data, NeverPlayedData) if not isinstance(league.data, NeverPlayedData | InvalidData)
else None, else None,
statistic=Statistic( statistic=Statistic(
total=handling_special_value(user_info.data.gamesplayed), total=handling_special_value(user_info.data.gamesplayed),