mirror of
https://github.com/A-Minos/nonebot-plugin-tetris-stats.git
synced 2026-03-05 05:36:54 +08:00
✨ 迁移到新模板 (#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
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:
@@ -1,8 +1,14 @@
|
||||
from datetime import datetime
|
||||
from typing import Literal
|
||||
|
||||
from pydantic import BaseModel
|
||||
from strenum import StrEnum
|
||||
|
||||
from ...typedefs import Number
|
||||
from ...typedefs import Lang, Number
|
||||
|
||||
|
||||
class Base(BaseModel):
|
||||
_lang: Lang
|
||||
|
||||
|
||||
class Avatar(BaseModel):
|
||||
@@ -18,3 +24,14 @@ class People(BaseModel):
|
||||
class Ranking(BaseModel):
|
||||
rating: Number
|
||||
rd: Number
|
||||
|
||||
|
||||
class HistoryData(BaseModel):
|
||||
score: Number
|
||||
record_at: datetime
|
||||
|
||||
|
||||
class Trending(StrEnum):
|
||||
UP = 'up'
|
||||
KEEP = 'keep'
|
||||
DOWN = 'down'
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
from typing import Literal
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from .base import People
|
||||
from .base import Base, People
|
||||
|
||||
|
||||
class Bind(BaseModel):
|
||||
class Bind(Base):
|
||||
platform: Literal['TETR.IO', 'TOP', 'TOS']
|
||||
status: Literal['error', 'success', 'unknown', 'unlink', 'unverified']
|
||||
type: Literal['success', 'unknown', 'unlink', 'unverified', 'error']
|
||||
user: People
|
||||
bot: People
|
||||
command: str
|
||||
prompt: str
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from ......games.tetrio.api.typedefs 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
|
||||
@@ -1,25 +0,0 @@
|
||||
from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from ......games.tetrio.api.typedefs 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
|
||||
@@ -1,10 +0,0 @@
|
||||
from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from .....typedefs import Number
|
||||
|
||||
|
||||
class TetraLeagueHistoryData(BaseModel):
|
||||
record_at: datetime
|
||||
tr: Number
|
||||
@@ -1,49 +0,0 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from ......games.tetrio.api.typedefs import Rank
|
||||
from .....typedefs import Number
|
||||
from ...base import People, Ranking
|
||||
from .base import TetraLeagueHistoryData
|
||||
|
||||
|
||||
class User(People):
|
||||
bio: str | None
|
||||
|
||||
|
||||
class TetraLeague(BaseModel):
|
||||
rank: Rank
|
||||
tr: Number
|
||||
global_rank: Number
|
||||
pps: Number
|
||||
lpm: Number
|
||||
apm: Number
|
||||
apl: Number
|
||||
vs: Number
|
||||
adpm: Number
|
||||
adpl: Number
|
||||
|
||||
|
||||
class TetraLeagueHistory(BaseModel):
|
||||
data: list[TetraLeagueHistoryData]
|
||||
split_interval: Number
|
||||
min_tr: Number
|
||||
max_tr: Number
|
||||
offset: Number
|
||||
|
||||
|
||||
class Radar(BaseModel):
|
||||
app: Number
|
||||
dsps: Number
|
||||
dspp: Number
|
||||
ci: Number
|
||||
ge: Number
|
||||
|
||||
|
||||
class Info(BaseModel):
|
||||
user: User
|
||||
ranking: Ranking
|
||||
tetra_league: TetraLeague
|
||||
tetra_league_history: TetraLeagueHistory
|
||||
radar: Radar
|
||||
sprint: str
|
||||
blitz: str
|
||||
@@ -1,17 +0,0 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from ...typedefs import Number
|
||||
from .base import People
|
||||
|
||||
|
||||
class Data(BaseModel):
|
||||
pps: Number
|
||||
lpm: Number
|
||||
apm: Number
|
||||
apl: Number
|
||||
|
||||
|
||||
class Info(BaseModel):
|
||||
user: People
|
||||
today: Data
|
||||
history: Data
|
||||
@@ -1,32 +0,0 @@
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from ...typedefs import Number
|
||||
from .base import People, Ranking
|
||||
|
||||
|
||||
class Multiplayer(BaseModel):
|
||||
pps: Number
|
||||
lpm: Number
|
||||
apm: Number
|
||||
apl: Number
|
||||
vs: Number
|
||||
adpm: Number
|
||||
adpl: Number
|
||||
|
||||
|
||||
class Radar(BaseModel):
|
||||
app: Number
|
||||
OR: Number = Field(serialization_alias='or')
|
||||
dspp: Number
|
||||
ci: Number
|
||||
ge: Number
|
||||
|
||||
|
||||
class Info(BaseModel):
|
||||
user: People
|
||||
ranking: Ranking
|
||||
multiplayer: Multiplayer
|
||||
radar: Radar
|
||||
sprint: str
|
||||
challenge: str
|
||||
marathon: str
|
||||
12
nonebot_plugin_tetris_stats/utils/render/schemas/v1/base.py
Normal file
12
nonebot_plugin_tetris_stats/utils/render/schemas/v1/base.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from ....typedefs import Number
|
||||
from ..base import HistoryData
|
||||
|
||||
|
||||
class History(BaseModel):
|
||||
data: list[HistoryData]
|
||||
split_interval: 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
|
||||
@@ -0,0 +1,50 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from .......games.tetrio.api.typedefs import Rank
|
||||
from ......typedefs import Number
|
||||
from ....base import Base, People, Trending
|
||||
from ...base import History
|
||||
|
||||
|
||||
class User(People):
|
||||
bio: str | None
|
||||
|
||||
|
||||
class Multiplayer(BaseModel):
|
||||
glicko: str
|
||||
rd: Number
|
||||
rank: Rank
|
||||
tr: str
|
||||
global_rank: Number
|
||||
|
||||
history: History
|
||||
|
||||
lpm: Number
|
||||
pps: Number
|
||||
lpm_trending: Trending
|
||||
|
||||
apm: Number
|
||||
apl: Number
|
||||
apm_trending: Trending
|
||||
|
||||
adpm: Number
|
||||
vs: Number
|
||||
adpl: Number
|
||||
adpm_trending: Trending
|
||||
|
||||
app: Number
|
||||
ci: Number
|
||||
dspp: Number
|
||||
dsps: Number
|
||||
ge: Number
|
||||
|
||||
|
||||
class Singleplayer(BaseModel):
|
||||
sprint: str
|
||||
blitz: str
|
||||
|
||||
|
||||
class Info(Base):
|
||||
user: User
|
||||
multiplayer: Multiplayer
|
||||
singleplayer: Singleplayer
|
||||
@@ -0,0 +1,19 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
from .....typedefs import Number
|
||||
from ...base import Base, People, Trending
|
||||
|
||||
|
||||
class Data(BaseModel):
|
||||
pps: Number
|
||||
lpm: Number
|
||||
lpm_trending: Trending
|
||||
apm: Number
|
||||
apl: Number
|
||||
apm_trending: Trending
|
||||
|
||||
|
||||
class Info(Base):
|
||||
user: People
|
||||
today: Data
|
||||
historical: Data
|
||||
@@ -0,0 +1,42 @@
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from .....typedefs import Number
|
||||
from ...base import Base, People, Trending
|
||||
from ..base import History
|
||||
|
||||
|
||||
class Multiplayer(BaseModel):
|
||||
history: History
|
||||
rating: Number
|
||||
rd: Number
|
||||
|
||||
lpm: Number
|
||||
pps: Number
|
||||
lpm_trending: Trending
|
||||
|
||||
apm: Number
|
||||
apl: Number
|
||||
apm_trending: Trending
|
||||
|
||||
adpm: Number
|
||||
vs: Number
|
||||
adpl: Number
|
||||
adpm_trending: Trending
|
||||
|
||||
app: Number
|
||||
ci: Number
|
||||
dspp: Number
|
||||
or_: Number = Field(serialization_alias='or')
|
||||
ge: Number
|
||||
|
||||
|
||||
class Singleplayer(BaseModel):
|
||||
sprint: str
|
||||
challenge: str
|
||||
marathon: str
|
||||
|
||||
|
||||
class Info(Base):
|
||||
user: People
|
||||
multiplayer: Multiplayer
|
||||
singleplayer: Singleplayer
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -3,10 +3,9 @@ from typing import Literal
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from ......games.tetrio.api.typedefs import Rank
|
||||
from .....typedefs import Number
|
||||
from ...base import Avatar
|
||||
from .base import TetraLeagueHistoryData
|
||||
from .......games.tetrio.api.typedefs import Rank
|
||||
from ......typedefs import Number
|
||||
from ....base import Avatar, Base, HistoryData
|
||||
|
||||
|
||||
class Badge(BaseModel):
|
||||
@@ -22,6 +21,7 @@ class User(BaseModel):
|
||||
country: str | None
|
||||
|
||||
role: Literal['anon', 'user', 'bot', 'halfmod', 'mod', 'admin', 'sysop', 'hidden', 'banned']
|
||||
botmaster: str | None
|
||||
|
||||
avatar: str | Avatar
|
||||
banner: str | None
|
||||
@@ -36,6 +36,9 @@ class User(BaseModel):
|
||||
badges: list[Badge]
|
||||
xp: Number
|
||||
|
||||
ar: Number
|
||||
achievements: list[int]
|
||||
|
||||
playtime: str | None
|
||||
join_at: datetime | None
|
||||
|
||||
@@ -74,18 +77,20 @@ class TetraLeague(BaseModel):
|
||||
|
||||
decaying: bool
|
||||
|
||||
history: list[TetraLeagueHistoryData] | None
|
||||
history: list[HistoryData] | None
|
||||
|
||||
|
||||
class Sprint(BaseModel):
|
||||
time: str
|
||||
global_rank: int | None
|
||||
global_rank: Number | None
|
||||
country_rank: Number | None
|
||||
play_at: datetime
|
||||
|
||||
|
||||
class Blitz(BaseModel):
|
||||
score: int
|
||||
score: Number
|
||||
global_rank: int | None
|
||||
country_rank: int | None
|
||||
play_at: datetime
|
||||
|
||||
|
||||
@@ -94,9 +99,29 @@ class Zen(BaseModel):
|
||||
score: int
|
||||
|
||||
|
||||
class Info(BaseModel):
|
||||
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
|
||||
@@ -1,24 +1,23 @@
|
||||
from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from ......games.tetrio.api.typedefs import Rank
|
||||
from .....typedefs import Number
|
||||
from ...base import Avatar
|
||||
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
|
||||
pps: Number
|
||||
apm: Number
|
||||
apl: Number
|
||||
vs: Number | None
|
||||
adpl: Number | None
|
||||
|
||||
|
||||
class User(BaseModel):
|
||||
@@ -26,11 +25,14 @@ class User(BaseModel):
|
||||
name: str
|
||||
avatar: str | Avatar
|
||||
country: str | None
|
||||
tetra_league: TetraLeague
|
||||
xp: Number
|
||||
join_at: datetime | None
|
||||
|
||||
|
||||
class List(BaseModel):
|
||||
class Data(BaseModel):
|
||||
user: User
|
||||
tetra_league: TetraLeague
|
||||
|
||||
|
||||
class List(Base):
|
||||
show_index: bool
|
||||
users: list[User]
|
||||
data: list[Data]
|
||||
Reference in New Issue
Block a user