mirror of
https://github.com/A-Minos/nonebot-plugin-tetris-stats.git
synced 2026-03-05 05:36:54 +08:00
✨ 更新模板
This commit is contained in:
@@ -4,6 +4,7 @@ from jinja2 import Environment, FileSystemLoader
|
||||
from nonebot.compat import PYDANTIC_V2
|
||||
|
||||
from ..templates import TEMPLATES_DIR
|
||||
from .schemas.base import Base
|
||||
from .schemas.bind import Bind
|
||||
from .schemas.v1.tetrio.rank import Data as TETRIORankDataV1
|
||||
from .schemas.v1.tetrio.user.info import Info as TETRIOUserInfoV1
|
||||
@@ -15,7 +16,7 @@ from .schemas.v2.tetrio.record.blitz import Record as TETRIORecordBlitzV2
|
||||
from .schemas.v2.tetrio.record.sprint import Record as TETRIORecordSprintV2
|
||||
from .schemas.v2.tetrio.tetra_league import Data as TETRIOTetraLeagueDataV2
|
||||
from .schemas.v2.tetrio.user.info import Info as TETRIOUserInfoV2
|
||||
from .schemas.v2.tetrio.user.list import Data as TETRIOUserListV2
|
||||
from .schemas.v2.tetrio.user.list import List as TETRIOUserListV2
|
||||
|
||||
env = Environment(
|
||||
loader=FileSystemLoader(TEMPLATES_DIR),
|
||||
@@ -50,35 +51,9 @@ async def render(render_type: Literal['v2/tetrio/tetra-league'], data: TETRIOTet
|
||||
async def render(render_type: Literal['v2/tetrio/user/info'], data: TETRIOUserInfoV2) -> str: ...
|
||||
@overload
|
||||
async def render(render_type: Literal['v2/tetrio/user/list'], data: TETRIOUserListV2) -> str: ...
|
||||
|
||||
|
||||
async def render(
|
||||
render_type: Literal[
|
||||
'v1/binding',
|
||||
'v1/tetrio/info',
|
||||
'v1/tetrio/rank',
|
||||
'v1/top/info',
|
||||
'v1/tos/info',
|
||||
'v2/tetrio/rank',
|
||||
'v2/tetrio/rank/detail',
|
||||
'v2/tetrio/record/blitz',
|
||||
'v2/tetrio/record/sprint',
|
||||
'v2/tetrio/tetra-league',
|
||||
'v2/tetrio/user/info',
|
||||
'v2/tetrio/user/list',
|
||||
],
|
||||
data: Bind
|
||||
| TETRIOUserInfoV1
|
||||
| TETRIORankDataV1
|
||||
| TOPInfoV1
|
||||
| TOSInfoV1
|
||||
| TETRIORankDataV2
|
||||
| TETRIORankDetailDataV2
|
||||
| TETRIORecordBlitzV2
|
||||
| TETRIORecordSprintV2
|
||||
| TETRIOTetraLeagueDataV2
|
||||
| TETRIOUserInfoV2
|
||||
| TETRIOUserListV2,
|
||||
render_type: str,
|
||||
data: Base,
|
||||
) -> str:
|
||||
if PYDANTIC_V2:
|
||||
return await env.get_template('index.html').render_async(
|
||||
|
||||
@@ -7,6 +7,6 @@ from ..base import HistoryData
|
||||
class History(BaseModel):
|
||||
data: list[HistoryData]
|
||||
split_interval: Number
|
||||
min_tr: Number
|
||||
max_tr: Number
|
||||
min_value: Number
|
||||
max_value: Number
|
||||
offset: Number
|
||||
|
||||
@@ -3,6 +3,7 @@ from datetime import datetime
|
||||
from pydantic import BaseModel
|
||||
|
||||
from ......games.tetrio.api.typedefs import ValidRank
|
||||
from ...base import Base
|
||||
|
||||
|
||||
class ItemData(BaseModel):
|
||||
@@ -11,6 +12,6 @@ class ItemData(BaseModel):
|
||||
players: int
|
||||
|
||||
|
||||
class Data(BaseModel):
|
||||
class Data(Base):
|
||||
items: dict[ValidRank, ItemData]
|
||||
updated_at: datetime
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from .....typedefs import Number
|
||||
from ...base import People, Trending
|
||||
from ...base import Base, People, Trending
|
||||
from ..base import History
|
||||
|
||||
|
||||
class Multiplayer(BaseModel):
|
||||
history: History
|
||||
rating: Number
|
||||
rd: Number
|
||||
|
||||
lpm: Number
|
||||
pps: Number
|
||||
@@ -34,7 +36,7 @@ class Singleplayer(BaseModel):
|
||||
marathon: str
|
||||
|
||||
|
||||
class Info(BaseModel):
|
||||
class Info(Base):
|
||||
user: People
|
||||
multiplayer: Multiplayer
|
||||
singleplayer: Singleplayer
|
||||
|
||||
@@ -4,6 +4,7 @@ from pydantic import BaseModel
|
||||
|
||||
from .......games.tetrio.api.typedefs import ValidRank
|
||||
from ......typedefs import Number
|
||||
from ....base import Base
|
||||
|
||||
|
||||
class AverageData(BaseModel):
|
||||
@@ -21,6 +22,6 @@ class ItemData(BaseModel):
|
||||
players: Number
|
||||
|
||||
|
||||
class Data(BaseModel):
|
||||
class Data(Base):
|
||||
items: dict[ValidRank, ItemData]
|
||||
updated_at: datetime
|
||||
|
||||
@@ -4,6 +4,7 @@ from pydantic import BaseModel
|
||||
|
||||
from .......games.tetrio.api.typedefs import ValidRank
|
||||
from ......typedefs import Number
|
||||
from ....base import Base
|
||||
|
||||
|
||||
class SpecialData(BaseModel):
|
||||
@@ -19,7 +20,7 @@ class SpecialData(BaseModel):
|
||||
vs_holder: str | None = None
|
||||
|
||||
|
||||
class Data(BaseModel):
|
||||
class Data(Base):
|
||||
name: ValidRank
|
||||
trending: Number
|
||||
require_tr: Number
|
||||
|
||||
@@ -3,7 +3,7 @@ from typing import Literal
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from ....base import People
|
||||
from ....base import Base, People
|
||||
|
||||
|
||||
class User(People):
|
||||
@@ -61,7 +61,7 @@ class Statistic(BaseModel):
|
||||
finesse: Finesse
|
||||
|
||||
|
||||
class Record(BaseModel):
|
||||
class Record(Base):
|
||||
type: Literal['best', 'personal_best', 'recent', 'disputed']
|
||||
|
||||
user: User
|
||||
|
||||
@@ -3,6 +3,7 @@ from datetime import datetime
|
||||
from pydantic import BaseModel
|
||||
|
||||
from .....typedefs import Number
|
||||
from ...base import Base
|
||||
|
||||
|
||||
class StatisticalData(BaseModel):
|
||||
@@ -32,7 +33,7 @@ class Game(BaseModel):
|
||||
handling: Handling
|
||||
|
||||
|
||||
class Data(BaseModel):
|
||||
class Data(Base):
|
||||
replay_id: str
|
||||
games: list[Game]
|
||||
play_at: datetime
|
||||
|
||||
@@ -5,7 +5,7 @@ from pydantic import BaseModel
|
||||
|
||||
from .......games.tetrio.api.typedefs import Rank
|
||||
from ......typedefs import Number
|
||||
from ....base import Avatar, HistoryData
|
||||
from ....base import Avatar, Base, HistoryData
|
||||
|
||||
|
||||
class Badge(BaseModel):
|
||||
@@ -37,7 +37,7 @@ class User(BaseModel):
|
||||
xp: Number
|
||||
|
||||
ar: Number
|
||||
achievements: list[Number]
|
||||
achievements: list[int]
|
||||
|
||||
playtime: str | None
|
||||
join_at: datetime | None
|
||||
@@ -100,24 +100,24 @@ class Zen(BaseModel):
|
||||
|
||||
|
||||
class Week(BaseModel):
|
||||
altitude: int
|
||||
altitude: Number
|
||||
global_rank: int | None
|
||||
country_rank: int | None
|
||||
play_at: datetime
|
||||
|
||||
|
||||
class Best(BaseModel):
|
||||
altitude: int
|
||||
altitude: Number
|
||||
global_rank: int | None
|
||||
play_at: datetime
|
||||
|
||||
|
||||
class Zenith(BaseModel):
|
||||
week: Week
|
||||
best: Best
|
||||
week: Week | None
|
||||
best: Best | None
|
||||
|
||||
|
||||
class Info(BaseModel):
|
||||
class Info(Base):
|
||||
user: User
|
||||
tetra_league: TetraLeague | None
|
||||
zenith: Zenith | None
|
||||
|
||||
@@ -2,7 +2,7 @@ from pydantic import BaseModel
|
||||
|
||||
from .......games.tetrio.api.typedefs import Rank
|
||||
from ......typedefs import Number
|
||||
from ....base import Avatar
|
||||
from ....base import Avatar, Base
|
||||
|
||||
|
||||
class TetraLeague(BaseModel):
|
||||
@@ -33,6 +33,6 @@ class Data(BaseModel):
|
||||
tetra_league: TetraLeague
|
||||
|
||||
|
||||
class List(BaseModel):
|
||||
class List(Base):
|
||||
show_index: bool
|
||||
data: list[Data]
|
||||
|
||||
Reference in New Issue
Block a user