确保同一个账号生成的随机头像一致

This commit is contained in:
2024-08-16 03:42:11 +08:00
parent 53740265b6
commit 9fb176b4bc
5 changed files with 12 additions and 11 deletions

View File

@@ -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,
)

View File

@@ -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):

View File

@@ -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)