From 2283605068e77d3378f066c7d72d3612dd7fa74e Mon Sep 17 00:00:00 2001 From: shoucandanghehe Date: Sat, 3 May 2025 04:36:12 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E5=AE=8C=E5=96=84Achievement?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/schemas/summaries/achievements.py | 88 ++++++++++++++++--- 1 file changed, 78 insertions(+), 10 deletions(-) diff --git a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/achievements.py b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/achievements.py index 166c528..bfe0432 100644 --- a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/achievements.py +++ b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/achievements.py @@ -1,25 +1,93 @@ -from typing import TypeAlias +from datetime import datetime +from enum import IntEnum +from typing import Literal, TypeAlias -from pydantic import BaseModel +from pydantic import BaseModel, Field from ..base import FailedModel, SuccessModel +class Rt(IntEnum): + PERCENTILE = 1 + ISSUE = 2 + ZENITH = 3 + PERCENTILELAX = 4 + PERCENTILEVLAX = 5 + PERCENTILEMLAX = 6 + + +class Vt(IntEnum): + NONE = 0 + NUMBER = 1 + TIME = 2 + TIME_INV = 3 + FLOOR = 4 + ISSUE = 5 + NUMBER_INV = 6 + + +class Art(IntEnum): + UNRANKED = 0 + RANKED = 1 + COMPETITIVE = 2 + + +class Rank(IntEnum): + NONE = 0 + BRONZE = 1 + SILVER = 2 + GOLD = 3 + PLATINUM = 4 + DIAMOND = 5 + ISSUED = 100 + + +class Ally(BaseModel): + id: str = Field(alias='_id') + username: str + role: Literal['anon', 'user', 'bot', 'halfmod', 'mod', 'admin', 'sysop', 'hidden', 'banned'] + country: str | None = None + supporter: bool + avatar_revision: int | None = None + + +class X(BaseModel): + ally: Ally | None = None + + class Achievement(BaseModel): # 这**都是些啥 k: int - o: int - rt: int - vt: int - min: int - deci: int + category: str name: str object: str - category: str - hidden: bool desc: str + o: int + rt: Rt + vt: Vt + art: Art + min: int + deci: int + hidden: bool + nolb: bool + event: str | None = None + event_past: bool | None = None + disabled: bool | None = None + pair: str | None = None + v: float | None = None + a: float | None = None + t: datetime | None = None + pos: int | None = None + total: int | None = None + rank: Rank | None = None + x: X | None = None n: str - stub: bool + + tiebreak: int + notifypb: bool + id: str | None = Field(None, alias='_id') + progress: float | None = None + stub: bool | None = None class AchievementsSuccessModel(SuccessModel):