diff --git a/nonebot_plugin_tetris_stats/games/top/query.py b/nonebot_plugin_tetris_stats/games/top/query.py index 881091c..2c46d27 100644 --- a/nonebot_plugin_tetris_stats/games/top/query.py +++ b/nonebot_plugin_tetris_stats/games/top/query.py @@ -78,7 +78,7 @@ async def make_query_image(profile: UserProfile) -> bytes: await render( 'v1/top/info', Info( - user=People(avatar=get_avatar(), name=profile.user_name), + user=People(avatar=get_avatar(profile.user_name), name=profile.user_name), today=InfoData(pps=today.pps, lpm=today.lpm, apm=today.apm, apl=today.apl), history=InfoData(pps=history.pps, lpm=history.lpm, apm=history.apm, apl=history.apl), ), diff --git a/nonebot_plugin_tetris_stats/games/tos/query.py b/nonebot_plugin_tetris_stats/games/tos/query.py index 7f02df6..da1ac08 100644 --- a/nonebot_plugin_tetris_stats/games/tos/query.py +++ b/nonebot_plugin_tetris_stats/games/tos/query.py @@ -223,7 +223,7 @@ async def make_query_image(user_info: UserInfoSuccess, game_data: GameData, even user=People( avatar=await get_avatar(event_user_info, 'Data URI', None) if event_user_info is not None - else get_random_avatar(), + else get_random_avatar(user_info.data.teaid), name=user_info.data.name, ), ranking=Ranking(rating=float(user_info.data.ranking), rd=round(float(user_info.data.rd_now), 2)), diff --git a/nonebot_plugin_tetris_stats/utils/render/avatar/__init__.py b/nonebot_plugin_tetris_stats/utils/render/avatar/__init__.py index 6048c4f..d1b3d64 100644 --- a/nonebot_plugin_tetris_stats/utils/render/avatar/__init__.py +++ b/nonebot_plugin_tetris_stats/utils/render/avatar/__init__.py @@ -1,6 +1,6 @@ from base64 import b64encode from io import BytesIO -from random import choice, randint +from random import Random from PIL import Image from PIL.Image import Resampling @@ -8,12 +8,13 @@ from PIL.Image import Resampling from .draw import PIECE_MEMBERS, SkinManager -def get_avatar() -> str: +def get_avatar(send: float | str | bytes | bytearray | None = None) -> str: + random = Random(send) # noqa: S311 skin = ( - SkinManager.get_skin() - .get_piece(choice(PIECE_MEMBERS)) # noqa: S311 + SkinManager.get_skin(send) + .get_piece(random.choice(PIECE_MEMBERS)) .rotate( - randint(-360, 360), # noqa: S311 + random.randint(-360, 360), expand=True, resample=Resampling.BICUBIC, ) diff --git a/nonebot_plugin_tetris_stats/utils/render/avatar/draw/__init__.py b/nonebot_plugin_tetris_stats/utils/render/avatar/draw/__init__.py index 1ea9e60..5372df6 100644 --- a/nonebot_plugin_tetris_stats/utils/render/avatar/draw/__init__.py +++ b/nonebot_plugin_tetris_stats/utils/render/avatar/draw/__init__.py @@ -1,6 +1,6 @@ from abc import ABC, abstractmethod from enum import Enum -from random import choice +from random import Random from typing import Any, ClassVar from PIL.Image import Image @@ -151,8 +151,8 @@ class SkinManager: cls.skin.append(skin) @classmethod - def get_skin(cls) -> 'Skin': - return choice(cls.skin) # noqa: S311 + def get_skin(cls, send: float | str | bytes | bytearray | None = None) -> 'Skin': + return Random(send).choice(cls.skin) # noqa: S311 class Skin(ABC): diff --git a/nonebot_plugin_tetris_stats/utils/render/avatar/draw/tech/__init__.py b/nonebot_plugin_tetris_stats/utils/render/avatar/draw/tech/__init__.py index 07816c5..981c1f3 100644 --- a/nonebot_plugin_tetris_stats/utils/render/avatar/draw/tech/__init__.py +++ b/nonebot_plugin_tetris_stats/utils/render/avatar/draw/tech/__init__.py @@ -90,5 +90,5 @@ class TechSkin(Skin): @driver.on_startup def _(): path = Path(__file__).parent / 'skins' - for i in path.iterdir(): + for i in sorted(path.iterdir()): TechSkin(i)