迁移到新模板 (#536)
Some checks are pending
Code Coverage / Test (macos-latest, 3.10) (push) Waiting to run
Code Coverage / Test (macos-latest, 3.11) (push) Waiting to run
Code Coverage / Test (macos-latest, 3.12) (push) Waiting to run
Code Coverage / Test (ubuntu-latest, 3.10) (push) Waiting to run
Code Coverage / Test (ubuntu-latest, 3.11) (push) Waiting to run
Code Coverage / Test (ubuntu-latest, 3.12) (push) Waiting to run
Code Coverage / Test (windows-latest, 3.10) (push) Waiting to run
Code Coverage / Test (windows-latest, 3.11) (push) Waiting to run
Code Coverage / Test (windows-latest, 3.12) (push) Waiting to run
Code Coverage / check (push) Blocked by required conditions
TypeCheck / TypeCheck (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run

*  添加依赖 strenum

* 🐛 优化等待逻辑,修复截图爆炸

*  使用新模板

* ️ 关闭自动转译

*  同步新模板 schemas

* 🌐 添加模板语言的映射

*  适配 bind

*  更新模板

*  全部适配

* 🚨 make mypy happy

* Update nonebot_plugin_tetris_stats/games/tos/query.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

*  使用用户设置语言

* 🚨 auto fix by pre-commit hooks

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
呵呵です
2025-04-23 19:25:50 +08:00
committed by GitHub
parent 0ac917f95e
commit ff3eb79967
52 changed files with 2415 additions and 1888 deletions

View File

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

View File

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

View File

@@ -0,0 +1,73 @@
from datetime import datetime
from typing import Literal
from pydantic import BaseModel
from ....base import Base, People
class User(People):
id: str
class Max(BaseModel):
combo: int
btb: int
class Mini(BaseModel):
total: int
single: int
double: int
class Tspins(BaseModel):
total: int
single: int
double: int
triple: int
mini: Mini
class Finesse(BaseModel):
faults: int
accuracy: float
class Statistic(BaseModel):
keys: int
kpp: float
kps: float
max: Max
pieces: int
pps: float
lines: int
lpm: float
holds: int | None
score: int
single: int
double: int
triple: int
quad: int
tspins: Tspins
all_clear: int
finesse: Finesse
class Record(Base):
type: Literal['best', 'personal_best', 'recent', 'disputed']
user: User
replay_id: str
rank: int | None
personal_rank: int | None
play_at: datetime

View File

@@ -0,0 +1,12 @@
from .base import Record as BaseRecord
from .base import Statistic as BaseStatistic
class Statistic(BaseStatistic):
spp: float
level: int
class Record(BaseRecord):
statistic: Statistic

View File

@@ -0,0 +1,7 @@
from .base import Record as BaseRecord
from .base import Statistic
class Record(BaseRecord):
statistic: Statistic
time: str

View File

@@ -0,0 +1,39 @@
from datetime import datetime
from pydantic import BaseModel
from .....typedefs import Number
from ...base import Base
class StatisticalData(BaseModel):
pps: Number
apm: Number
apl: Number
vs: Number
adpl: Number
class User(BaseModel):
id: str
name: str
class Handling(BaseModel):
arr: Number
das: Number
sdf: Number
class Game(BaseModel):
user: User
points: Number
average_data: StatisticalData
data: list[StatisticalData]
handling: Handling
class Data(Base):
replay_id: str
games: list[Game]
play_at: datetime

View File

@@ -0,0 +1,128 @@
from datetime import datetime
from typing import Literal
from pydantic import BaseModel
from .......games.tetrio.api.typedefs import Rank
from ......typedefs import Number
from ....base import Avatar, Base, HistoryData
class Badge(BaseModel):
id: str
description: str
group: str | None
receive_at: datetime | None
class User(BaseModel):
id: str
name: str
country: str | None
role: Literal['anon', 'user', 'bot', 'halfmod', 'mod', 'admin', 'sysop', 'hidden', 'banned']
botmaster: str | None
avatar: str | Avatar
banner: str | None
bio: str | None
friend_count: int | None
supporter_tier: int
bad_standing: bool
badges: list[Badge]
xp: Number
ar: Number
achievements: list[int]
playtime: str | None
join_at: datetime | None
class Statistic(BaseModel):
total: int | None
wins: int | None
class TetraLeagueStatistic(BaseModel):
total: int
wins: int
class TetraLeague(BaseModel):
rank: Rank
highest_rank: Rank
tr: Number
glicko: Number | None
rd: Number | None
global_rank: int | None
country_rank: int | None
pps: Number | None
apm: Number | None
apl: Number | None
vs: Number | None
adpl: Number | None
statistic: TetraLeagueStatistic
decaying: bool
history: list[HistoryData] | None
class Sprint(BaseModel):
time: str
global_rank: Number | None
country_rank: Number | None
play_at: datetime
class Blitz(BaseModel):
score: Number
global_rank: int | None
country_rank: int | None
play_at: datetime
class Zen(BaseModel):
level: int
score: int
class Week(BaseModel):
altitude: Number
global_rank: int | None
country_rank: int | None
play_at: datetime
class Best(BaseModel):
altitude: Number
global_rank: int | None
play_at: datetime
class Zenith(BaseModel):
week: Week | None
best: Best | None
class Info(Base):
user: User
tetra_league: TetraLeague | None
zenith: Zenith | None
zenithex: Zenith | None
statistic: Statistic | None
sprint: Sprint | None
blitz: Blitz | None
zen: Zen | None

View File

@@ -0,0 +1,38 @@
from pydantic import BaseModel
from .......games.tetrio.api.typedefs import Rank
from ......typedefs import Number
from ....base import Avatar, Base
class TetraLeague(BaseModel):
pps: Number
apm: Number
apl: Number
vs: Number | None
adpl: Number | None
rank: Rank
tr: Number
glicko: Number | None
rd: Number | None
decaying: bool
class User(BaseModel):
id: str
name: str
avatar: str | Avatar
country: str | None
xp: Number
class Data(BaseModel):
user: User
tetra_league: TetraLeague
class List(Base):
show_index: bool
data: list[Data]