TETR.IO rank 命令使用图片回复

This commit is contained in:
2024-07-17 08:12:30 +08:00
parent e4f19d1d81
commit 737671d7a8
10 changed files with 437 additions and 225 deletions

View File

@@ -6,6 +6,8 @@ from nonebot.compat import PYDANTIC_V2
from ..templates import templates_dir
from .schemas.bind import Bind
from .schemas.tetrio.tetrio_info import Info as TETRIOInfo
from .schemas.tetrio.tetrio_rank import Data as TETRIORankData
from .schemas.tetrio.tetrio_rank_detail import Data as TETRIORankDetailData
from .schemas.tetrio.tetrio_record_blitz import Record as TETRIORecordBlitz
from .schemas.tetrio.tetrio_record_sprint import Record as TETRIORecordSprint
from .schemas.tetrio.tetrio_user_info_v2 import Info as TETRIOUserInfoV2
@@ -20,34 +22,24 @@ env = Environment(
@overload
async def render(render_type: Literal['v1/binding'], data: Bind) -> str: ...
@overload
async def render(render_type: Literal['v1/tetrio/info'], data: TETRIOInfo) -> str: ...
@overload
async def render(render_type: Literal['v1/top/info'], data: TOPInfo) -> str: ...
@overload
async def render(render_type: Literal['v1/tos/info'], data: TOSInfo) -> str: ...
@overload
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: ...
@overload
async def render(render_type: Literal['v2/tetrio/record/40l'], data: TETRIORecordSprint) -> str: ...
@overload
async def render(render_type: Literal['v2/tetrio/record/blitz'], data: TETRIORecordBlitz) -> str: ...
@overload
async def render(render_type: Literal['v2/tetrio/rank'], data: TETRIORankData) -> str: ...
@overload
async def render(render_type: Literal['v2/tetrio/rank/detail'], data: TETRIORankDetailData) -> str: ...
async def render(
@@ -60,6 +52,8 @@ async def render(
'v2/tetrio/user/list',
'v2/tetrio/record/40l',
'v2/tetrio/record/blitz',
'v2/tetrio/rank',
'v2/tetrio/rank/detail',
],
data: Bind
| TETRIOInfo
@@ -68,7 +62,9 @@ async def render(
| TETRIOUserInfoV2
| TETRIOUserListV2
| TETRIORecordSprint
| TETRIORecordBlitz,
| TETRIORecordBlitz
| TETRIORankData
| TETRIORankDetailData,
) -> str:
if PYDANTIC_V2:
return await env.get_template('index.html').render_async(

View File

@@ -0,0 +1,25 @@
from datetime import datetime
from pydantic import BaseModel
from .....games.tetrio.api.typing import ValidRank
class AverageData(BaseModel):
pps: float
apm: float
apl: float
vs: float
adpl: float
class ItemData(BaseModel):
require_tr: float
trending: float
average_data: AverageData
players: int
class Data(BaseModel):
items: dict[ValidRank, ItemData]
updated_at: datetime

View File

@@ -0,0 +1,31 @@
from datetime import datetime
from pydantic import BaseModel
from .....games.tetrio.api.typing import ValidRank
class SpecialData(BaseModel):
apm: float
pps: float
lpm: float
vs: float
adpm: float
apl: float | None = None
adpl: float | None = None
apm_holder: str | None = None
pps_holder: str | None = None
vs_holder: str | None = None
class Data(BaseModel):
name: ValidRank
trending: float
require_tr: float
players: int
minimum_data: SpecialData
average_data: SpecialData
maximum_data: SpecialData
updated_at: datetime