diff --git a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/league.py b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/league.py index 29bb71b..e6cfc61 100644 --- a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/league.py +++ b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/league.py @@ -122,5 +122,9 @@ class RatedData(BaseData): 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): - data: NeverPlayedData | NeverRatedData | RatedData + data: NeverPlayedData | NeverRatedData | RatedData | InvalidData diff --git a/nonebot_plugin_tetris_stats/games/tetrio/query/tools.py b/nonebot_plugin_tetris_stats/games/tetrio/query/tools.py index 85a0434..2cb30f5 100644 --- a/nonebot_plugin_tetris_stats/games/tetrio/query/tools.py +++ b/nonebot_plugin_tetris_stats/games/tetrio/query/tools.py @@ -6,7 +6,7 @@ from zoneinfo import ZoneInfo from ....utils.exception import FallbackError from ....utils.render.schemas.tetrio.user.base import TetraLeagueHistoryData 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( @@ -47,6 +47,8 @@ def get_league_data( user_info: LeagueSuccessModel, league_type: type[L] | None = None ) -> L | NeverPlayedData | NeverRatedData | RatedData: league = user_info.data + if isinstance(league, InvalidData): + raise FallbackError if league_type is None: return league if isinstance(league, league_type): diff --git a/nonebot_plugin_tetris_stats/games/tetrio/query/v2.py b/nonebot_plugin_tetris_stats/games/tetrio/query/v2.py index 017cae5..fe3bf7c 100644 --- a/nonebot_plugin_tetris_stats/games/tetrio/query/v2.py +++ b/nonebot_plugin_tetris_stats/games/tetrio/query/v2.py @@ -22,7 +22,7 @@ from ....utils.render.schemas.tetrio.user.info_v2 import ( ) from ....utils.screenshot import screenshot 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 @@ -111,7 +111,7 @@ async def make_query_image_v2(player: Player) -> bytes: decaying=league.data.decaying, history=history, ) - if not isinstance(league.data, NeverPlayedData) + if not isinstance(league.data, NeverPlayedData | InvalidData) else None, statistic=Statistic( total=handling_special_value(user_info.data.gamesplayed),