mirror of
https://github.com/A-Minos/nonebot-plugin-tetris-stats.git
synced 2026-03-05 05:36:54 +08:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0bc3b86820 | |||
|
|
57d0b15242 | ||
|
|
56fe45efcf | ||
| 13f005179f |
@@ -7,7 +7,7 @@ ci:
|
||||
autoupdate_commit_msg: ':arrow_up: auto update by pre-commit hooks'
|
||||
repos:
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.11.6
|
||||
rev: v0.11.8
|
||||
hooks:
|
||||
- id: ruff
|
||||
args: [--fix, --exit-non-zero-on-fix]
|
||||
|
||||
@@ -1,25 +1,93 @@
|
||||
from typing import TypeAlias
|
||||
from datetime import datetime
|
||||
from enum import IntEnum
|
||||
from typing import Literal, TypeAlias
|
||||
|
||||
from pydantic import BaseModel
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from ..base import FailedModel, SuccessModel
|
||||
|
||||
|
||||
class RankType(IntEnum):
|
||||
PERCENTILE = 1
|
||||
ISSUE = 2
|
||||
ZENITH = 3
|
||||
PERCENTILELAX = 4
|
||||
PERCENTILEVLAX = 5
|
||||
PERCENTILEMLAX = 6
|
||||
|
||||
|
||||
class ValueType(IntEnum):
|
||||
NONE = 0
|
||||
NUMBER = 1
|
||||
TIME = 2
|
||||
TIME_INV = 3
|
||||
FLOOR = 4
|
||||
ISSUE = 5
|
||||
NUMBER_INV = 6
|
||||
|
||||
|
||||
class ArType(IntEnum):
|
||||
UNRANKED = 0
|
||||
RANKED = 1
|
||||
COMPETITIVE = 2
|
||||
|
||||
|
||||
class Rank(IntEnum):
|
||||
NONE = 0
|
||||
BRONZE = 1
|
||||
SILVER = 2
|
||||
GOLD = 3
|
||||
PLATINUM = 4
|
||||
DIAMOND = 5
|
||||
ISSUED = 100
|
||||
|
||||
|
||||
class Ally(BaseModel):
|
||||
id: str = Field(alias='_id')
|
||||
username: str
|
||||
role: Literal['anon', 'user', 'bot', 'halfmod', 'mod', 'admin', 'sysop', 'hidden', 'banned']
|
||||
country: str | None = None
|
||||
supporter: bool
|
||||
avatar_revision: int | None = None
|
||||
|
||||
|
||||
class X(BaseModel):
|
||||
ally: Ally | None = None
|
||||
|
||||
|
||||
class Achievement(BaseModel):
|
||||
# 这**都是些啥
|
||||
k: int
|
||||
o: int
|
||||
rt: int
|
||||
vt: int
|
||||
achievement_id: int = Field(alias='k')
|
||||
category: str
|
||||
primary_name: str = Field(alias='name')
|
||||
objective: str = Field(alias='object')
|
||||
flavor_text: str = Field(alias='desc')
|
||||
order: int = Field(alias='o')
|
||||
rank_type: RankType = Field(alias='rt')
|
||||
value_type: ValueType = Field(alias='vt')
|
||||
ar_type: ArType = Field(alias='art')
|
||||
min: int
|
||||
deci: int
|
||||
name: str
|
||||
object: str
|
||||
category: str
|
||||
hidden: bool
|
||||
desc: str
|
||||
nolb: bool
|
||||
event: str | None = None
|
||||
event_past: bool | None = None
|
||||
disabled: bool | None = None
|
||||
pair: bool | None = None
|
||||
achieved_score: float | None = Field(None, alias='v')
|
||||
a: float | None = None
|
||||
t: datetime | None = None
|
||||
pos: int | None = None
|
||||
total: int | None = None
|
||||
rank: Rank | None = None
|
||||
x: X | None = None
|
||||
n: str
|
||||
stub: bool
|
||||
|
||||
tiebreak: int
|
||||
notifypb: bool
|
||||
id: str | None = Field(None, alias='_id')
|
||||
progress: float | None = None
|
||||
stub: bool | None = None
|
||||
|
||||
|
||||
class AchievementsSuccessModel(SuccessModel):
|
||||
|
||||
@@ -11,6 +11,7 @@ from ....utils.metrics import get_metrics
|
||||
from ....utils.render import render
|
||||
from ....utils.render.schemas.base import Avatar
|
||||
from ....utils.render.schemas.v2.tetrio.user.info import (
|
||||
Achievement,
|
||||
Badge,
|
||||
Best,
|
||||
Blitz,
|
||||
@@ -33,7 +34,7 @@ from .tools import flow_to_history, handling_special_value
|
||||
async def make_query_image_v2(player: Player) -> bytes:
|
||||
(
|
||||
(user, user_info, league, sprint, blitz, zen),
|
||||
(avatar_revision, banner_revision, leagueflow, zenith, zenithex),
|
||||
(avatar_revision, banner_revision, leagueflow, zenith, zenithex, achievements),
|
||||
) = await gather(
|
||||
gather(
|
||||
player.user,
|
||||
@@ -49,6 +50,7 @@ async def make_query_image_v2(player: Player) -> bytes:
|
||||
player.get_leagueflow(),
|
||||
player.get_summaries('zenith'),
|
||||
player.get_summaries('zenithex'),
|
||||
player.get_summaries('achievements'),
|
||||
),
|
||||
)
|
||||
if sprint.data.record is not None:
|
||||
@@ -110,7 +112,20 @@ async def make_query_image_v2(player: Player) -> bytes:
|
||||
],
|
||||
xp=user_info.data.xp,
|
||||
ar=user_info.data.ar,
|
||||
achievements=user_info.data.achievements,
|
||||
achievements=[
|
||||
Achievement(
|
||||
key=i.achievement_id,
|
||||
rank_type=i.rank_type,
|
||||
ar_type=i.ar_type,
|
||||
stub=i.stub,
|
||||
rank=i.rank,
|
||||
achieved_score=i.achieved_score,
|
||||
pos=i.pos,
|
||||
progress=i.progress,
|
||||
total=i.total,
|
||||
)
|
||||
for i in achievements.data
|
||||
],
|
||||
playtime=play_time,
|
||||
join_at=user_info.data.ts,
|
||||
),
|
||||
|
||||
@@ -3,6 +3,8 @@ from typing import Literal
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from .......games.tetrio.api.schemas.summaries.achievements import ArType, RankType
|
||||
from .......games.tetrio.api.schemas.summaries.achievements import Rank as AchievementRank
|
||||
from .......games.tetrio.api.typedefs import Rank
|
||||
from ......typedefs import Number
|
||||
from ....base import Avatar, Base, HistoryData
|
||||
@@ -15,6 +17,18 @@ class Badge(BaseModel):
|
||||
receive_at: datetime | None
|
||||
|
||||
|
||||
class Achievement(BaseModel):
|
||||
key: int
|
||||
rank_type: RankType
|
||||
ar_type: ArType
|
||||
stub: bool | None
|
||||
rank: AchievementRank | None
|
||||
achieved_score: float | None
|
||||
pos: int | None
|
||||
progress: float | None
|
||||
total: int | None
|
||||
|
||||
|
||||
class User(BaseModel):
|
||||
id: str
|
||||
name: str
|
||||
@@ -37,7 +51,7 @@ class User(BaseModel):
|
||||
xp: Number
|
||||
|
||||
ar: Number
|
||||
achievements: list[int]
|
||||
achievements: list[Achievement]
|
||||
|
||||
playtime: str | None
|
||||
join_at: datetime | None
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#:schema https://json.schemastore.org/uv.json
|
||||
|
||||
[project]
|
||||
name = "nonebot-plugin-tetris-stats"
|
||||
version = "1.8.2"
|
||||
version = "1.8.3"
|
||||
description = "一款基于 NoneBot2 的用于查询 Tetris 相关游戏数据的插件"
|
||||
readme = "README.md"
|
||||
authors = [{ name = "shoucandanghehe", email = "wallfjjd@gmail.com" }]
|
||||
@@ -160,7 +162,7 @@ defineConstant = { PYDANTIC_V2 = true }
|
||||
typeCheckingMode = "standard"
|
||||
|
||||
[tool.bumpversion]
|
||||
current_version = "1.8.2"
|
||||
current_version = "1.8.3"
|
||||
tag = true
|
||||
sign_tags = true
|
||||
tag_name = "{new_version}"
|
||||
|
||||
Reference in New Issue
Block a user