mirror of
https://github.com/A-Minos/nonebot-plugin-tetris-stats.git
synced 2026-03-05 05:36:54 +08:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8d1ebc06d1 | |||
| c57aa48048 | |||
| ad90562fdf | |||
| cbc96fc09e | |||
| 8e10cfe0d0 | |||
| d192f0506d | |||
| 44aed656b8 |
@@ -0,0 +1,102 @@
|
|||||||
|
from typing import Literal
|
||||||
|
|
||||||
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
from ...typing import Rank, S1Rank, S1ValidRank
|
||||||
|
from ..base import SuccessModel
|
||||||
|
|
||||||
|
|
||||||
|
class PastInner(BaseModel):
|
||||||
|
season: str
|
||||||
|
username: str
|
||||||
|
country: str | None = None
|
||||||
|
placement: int
|
||||||
|
gamesplayed: int
|
||||||
|
gameswon: int
|
||||||
|
glicko: float
|
||||||
|
gxe: float
|
||||||
|
tr: float
|
||||||
|
rd: float
|
||||||
|
rank: S1Rank
|
||||||
|
bestrank: S1ValidRank
|
||||||
|
ranked: bool
|
||||||
|
apm: float
|
||||||
|
pps: float
|
||||||
|
vs: float
|
||||||
|
|
||||||
|
|
||||||
|
class Past(BaseModel):
|
||||||
|
first: PastInner = Field(..., alias='1')
|
||||||
|
|
||||||
|
|
||||||
|
class BaseData(BaseModel):
|
||||||
|
decaying: bool
|
||||||
|
past: Past
|
||||||
|
|
||||||
|
|
||||||
|
class NeverPlayedData(BaseData):
|
||||||
|
gamesplayed: Literal[0]
|
||||||
|
gameswon: Literal[0]
|
||||||
|
glicko: Literal[-1]
|
||||||
|
rd: Literal[-1]
|
||||||
|
gxe: Literal[-1]
|
||||||
|
tr: Literal[-1]
|
||||||
|
rank: Literal['z']
|
||||||
|
apm: None = None
|
||||||
|
pps: None = None
|
||||||
|
vs: None = None
|
||||||
|
standing: Literal[-1]
|
||||||
|
standing_local: Literal[-1]
|
||||||
|
prev_rank: None
|
||||||
|
prev_at: Literal[-1]
|
||||||
|
next_rank: None
|
||||||
|
next_at: Literal[-1]
|
||||||
|
percentile: Literal[-1]
|
||||||
|
percentile_rank: Literal['z']
|
||||||
|
|
||||||
|
|
||||||
|
class NeverRatedData(BaseData):
|
||||||
|
gamesplayed: Literal[1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||||
|
gameswon: int
|
||||||
|
glicko: Literal[-1]
|
||||||
|
rd: Literal[-1]
|
||||||
|
gxe: Literal[-1]
|
||||||
|
tr: Literal[-1]
|
||||||
|
apm: float
|
||||||
|
pps: float
|
||||||
|
vs: float
|
||||||
|
rank: Literal['z']
|
||||||
|
standing: Literal[-1]
|
||||||
|
standing_local: Literal[-1]
|
||||||
|
prev_rank: None
|
||||||
|
prev_at: Literal[-1]
|
||||||
|
next_rank: None
|
||||||
|
next_at: Literal[-1]
|
||||||
|
percentile: Literal[-1]
|
||||||
|
percentile_rank: Literal['z']
|
||||||
|
|
||||||
|
|
||||||
|
class RatedData(BaseData):
|
||||||
|
gamesplayed: int
|
||||||
|
gameswon: int
|
||||||
|
glicko: float
|
||||||
|
rd: float
|
||||||
|
gxe: float
|
||||||
|
tr: float
|
||||||
|
rank: Rank
|
||||||
|
bestrank: Rank
|
||||||
|
standing: int
|
||||||
|
apm: float
|
||||||
|
pps: float
|
||||||
|
vs: float
|
||||||
|
standing_local: int
|
||||||
|
prev_rank: Rank | None = None
|
||||||
|
prev_at: int
|
||||||
|
next_rank: Rank | None = None
|
||||||
|
next_at: int
|
||||||
|
percentile: float
|
||||||
|
percentile_rank: str
|
||||||
|
|
||||||
|
|
||||||
|
class LeagueSuccessModel(SuccessModel):
|
||||||
|
data: NeverPlayedData | NeverRatedData | RatedData
|
||||||
@@ -39,13 +39,13 @@ from .. import add_block_handlers, alc
|
|||||||
from ..constant import CANT_VERIFY_MESSAGE
|
from ..constant import CANT_VERIFY_MESSAGE
|
||||||
from . import command, get_player
|
from . import command, get_player
|
||||||
from .api import Player
|
from .api import Player
|
||||||
|
from .api.schemas.summaries.league import LeagueSuccessModel, NeverPlayedData, NeverRatedData
|
||||||
from .constant import GAME_TYPE
|
from .constant import GAME_TYPE
|
||||||
from .models import TETRIOUserConfig
|
from .models import TETRIOUserConfig
|
||||||
from .typing import Template
|
from .typing import Template
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from .api.schemas.summaries import SoloSuccessModel, ZenSuccessModel
|
from .api.schemas.summaries import SoloSuccessModel, ZenSuccessModel
|
||||||
from .api.schemas.summaries.league import LeagueSuccessModel
|
|
||||||
from .api.schemas.user import User
|
from .api.schemas.user import User
|
||||||
from .api.schemas.user_info import UserInfoSuccess
|
from .api.schemas.user_info import UserInfoSuccess
|
||||||
|
|
||||||
@@ -229,7 +229,7 @@ async def make_query_image_v2(player: Player) -> bytes:
|
|||||||
),
|
),
|
||||||
tetra_league=TetraLeague(
|
tetra_league=TetraLeague(
|
||||||
rank=league.data.rank,
|
rank=league.data.rank,
|
||||||
highest_rank=league.data.bestrank,
|
highest_rank='z' if isinstance(league.data, NeverRatedData) else league.data.bestrank,
|
||||||
tr=round(league.data.tr, 2),
|
tr=round(league.data.tr, 2),
|
||||||
glicko=round(league.data.glicko, 2),
|
glicko=round(league.data.glicko, 2),
|
||||||
rd=round(league.data.rd, 2),
|
rd=round(league.data.rd, 2),
|
||||||
@@ -243,7 +243,9 @@ async def make_query_image_v2(player: Player) -> bytes:
|
|||||||
statistic=TetraLeagueStatistic(total=league.data.gamesplayed, wins=league.data.gameswon),
|
statistic=TetraLeagueStatistic(total=league.data.gamesplayed, wins=league.data.gameswon),
|
||||||
decaying=league.data.decaying,
|
decaying=league.data.decaying,
|
||||||
history=None,
|
history=None,
|
||||||
),
|
)
|
||||||
|
if not isinstance(league.data, NeverPlayedData)
|
||||||
|
else None,
|
||||||
statistic=Statistic(
|
statistic=Statistic(
|
||||||
total=handling_special_value(user_info.data.gamesplayed),
|
total=handling_special_value(user_info.data.gamesplayed),
|
||||||
wins=handling_special_value(user_info.data.gameswon),
|
wins=handling_special_value(user_info.data.gameswon),
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ class TetraLeagueStatistic(BaseModel):
|
|||||||
|
|
||||||
class TetraLeague(BaseModel):
|
class TetraLeague(BaseModel):
|
||||||
rank: Rank
|
rank: Rank
|
||||||
highest_rank: ValidRank
|
highest_rank: Rank
|
||||||
|
|
||||||
tr: Number
|
tr: Number
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = 'nonebot-plugin-tetris-stats'
|
name = 'nonebot-plugin-tetris-stats'
|
||||||
version = '1.4.9'
|
version = '1.4.12'
|
||||||
description = '一款基于 NoneBot2 的用于查询 Tetris 相关游戏数据的插件'
|
description = '一款基于 NoneBot2 的用于查询 Tetris 相关游戏数据的插件'
|
||||||
authors = ['scdhh <wallfjjd@gmail.com>']
|
authors = ['scdhh <wallfjjd@gmail.com>']
|
||||||
readme = 'README.md'
|
readme = 'README.md'
|
||||||
|
|||||||
Reference in New Issue
Block a user