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'
|
autoupdate_commit_msg: ':arrow_up: auto update by pre-commit hooks'
|
||||||
repos:
|
repos:
|
||||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||||
rev: v0.11.6
|
rev: v0.11.8
|
||||||
hooks:
|
hooks:
|
||||||
- id: ruff
|
- id: ruff
|
||||||
args: [--fix, --exit-non-zero-on-fix]
|
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
|
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):
|
class Achievement(BaseModel):
|
||||||
# 这**都是些啥
|
# 这**都是些啥
|
||||||
k: int
|
achievement_id: int = Field(alias='k')
|
||||||
o: int
|
category: str
|
||||||
rt: int
|
primary_name: str = Field(alias='name')
|
||||||
vt: int
|
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
|
min: int
|
||||||
deci: int
|
deci: int
|
||||||
name: str
|
|
||||||
object: str
|
|
||||||
category: str
|
|
||||||
hidden: bool
|
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
|
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):
|
class AchievementsSuccessModel(SuccessModel):
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ from ....utils.metrics import get_metrics
|
|||||||
from ....utils.render import render
|
from ....utils.render import render
|
||||||
from ....utils.render.schemas.base import Avatar
|
from ....utils.render.schemas.base import Avatar
|
||||||
from ....utils.render.schemas.v2.tetrio.user.info import (
|
from ....utils.render.schemas.v2.tetrio.user.info import (
|
||||||
|
Achievement,
|
||||||
Badge,
|
Badge,
|
||||||
Best,
|
Best,
|
||||||
Blitz,
|
Blitz,
|
||||||
@@ -33,7 +34,7 @@ from .tools import flow_to_history, handling_special_value
|
|||||||
async def make_query_image_v2(player: Player) -> bytes:
|
async def make_query_image_v2(player: Player) -> bytes:
|
||||||
(
|
(
|
||||||
(user, user_info, league, sprint, blitz, zen),
|
(user, user_info, league, sprint, blitz, zen),
|
||||||
(avatar_revision, banner_revision, leagueflow, zenith, zenithex),
|
(avatar_revision, banner_revision, leagueflow, zenith, zenithex, achievements),
|
||||||
) = await gather(
|
) = await gather(
|
||||||
gather(
|
gather(
|
||||||
player.user,
|
player.user,
|
||||||
@@ -49,6 +50,7 @@ async def make_query_image_v2(player: Player) -> bytes:
|
|||||||
player.get_leagueflow(),
|
player.get_leagueflow(),
|
||||||
player.get_summaries('zenith'),
|
player.get_summaries('zenith'),
|
||||||
player.get_summaries('zenithex'),
|
player.get_summaries('zenithex'),
|
||||||
|
player.get_summaries('achievements'),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
if sprint.data.record is not None:
|
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,
|
xp=user_info.data.xp,
|
||||||
ar=user_info.data.ar,
|
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,
|
playtime=play_time,
|
||||||
join_at=user_info.data.ts,
|
join_at=user_info.data.ts,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ from typing import Literal
|
|||||||
|
|
||||||
from pydantic import BaseModel
|
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 .......games.tetrio.api.typedefs import Rank
|
||||||
from ......typedefs import Number
|
from ......typedefs import Number
|
||||||
from ....base import Avatar, Base, HistoryData
|
from ....base import Avatar, Base, HistoryData
|
||||||
@@ -15,6 +17,18 @@ class Badge(BaseModel):
|
|||||||
receive_at: datetime | None
|
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):
|
class User(BaseModel):
|
||||||
id: str
|
id: str
|
||||||
name: str
|
name: str
|
||||||
@@ -37,7 +51,7 @@ class User(BaseModel):
|
|||||||
xp: Number
|
xp: Number
|
||||||
|
|
||||||
ar: Number
|
ar: Number
|
||||||
achievements: list[int]
|
achievements: list[Achievement]
|
||||||
|
|
||||||
playtime: str | None
|
playtime: str | None
|
||||||
join_at: datetime | None
|
join_at: datetime | None
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
|
#:schema https://json.schemastore.org/uv.json
|
||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "nonebot-plugin-tetris-stats"
|
name = "nonebot-plugin-tetris-stats"
|
||||||
version = "1.8.2"
|
version = "1.8.3"
|
||||||
description = "一款基于 NoneBot2 的用于查询 Tetris 相关游戏数据的插件"
|
description = "一款基于 NoneBot2 的用于查询 Tetris 相关游戏数据的插件"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
authors = [{ name = "shoucandanghehe", email = "wallfjjd@gmail.com" }]
|
authors = [{ name = "shoucandanghehe", email = "wallfjjd@gmail.com" }]
|
||||||
@@ -160,7 +162,7 @@ defineConstant = { PYDANTIC_V2 = true }
|
|||||||
typeCheckingMode = "standard"
|
typeCheckingMode = "standard"
|
||||||
|
|
||||||
[tool.bumpversion]
|
[tool.bumpversion]
|
||||||
current_version = "1.8.2"
|
current_version = "1.8.3"
|
||||||
tag = true
|
tag = true
|
||||||
sign_tags = true
|
sign_tags = true
|
||||||
tag_name = "{new_version}"
|
tag_name = "{new_version}"
|
||||||
|
|||||||
Reference in New Issue
Block a user