diff --git a/README.md b/README.md index e88d95c4..12ed6166 100644 --- a/README.md +++ b/README.md @@ -300,6 +300,7 @@ PS: **ARM平台** 请使用全量版 同时 **如果你的机器 RAM < 1G 可能 * 词条问题支持真寻的昵称开头与at真寻开头并优化回复 * 更正私聊时功能管理回复错误 +* 添加单例注解 * 添加统计表 ### 2022/12/10 diff --git a/basic_plugins/help/utils.py b/basic_plugins/help/utils.py index 5e425929..301cb379 100644 --- a/basic_plugins/help/utils.py +++ b/basic_plugins/help/utils.py @@ -1,5 +1,6 @@ from typing import List, Tuple, Dict, Optional from configs.path_config import IMAGE_PATH +from utils.decorator import Singleton from utils.image_utils import BuildImage from configs.config import Config import os @@ -109,20 +110,15 @@ def group_image(image_list: List[BuildImage]) -> Tuple[List[List[BuildImage]], i return image_group, max(max_h + 250, max_w + 70) +@Singleton class HelpImageBuild: - build: Optional["HelpImageBuild"] = None - def __init__(self): + print('初始化咯') self._data: Dict[str, PluginData] = plugin_data_manager.get_data() self._sort_data: Dict[str, List[PluginData]] = {} self._image_list = [] - def __new__(cls, *args, **kwargs): - if not cls.build: - cls.build = super().__new__(cls) - return cls.build - def sort_type(self): """ 说明: @@ -156,7 +152,8 @@ class HelpImageBuild: :param group_id: 群号 """ self._image_list = [] - self.sort_type() + if not self._sort_data.keys(): + self.sort_type() font_size = 24 build_type = Config.get_config("help", "TYPE") _image = BuildImage(0, 0, plain_text="1", font_size=font_size) diff --git a/basic_plugins/hooks/_utils.py b/basic_plugins/hooks/_utils.py index 5f30fd60..c32906f8 100644 --- a/basic_plugins/hooks/_utils.py +++ b/basic_plugins/hooks/_utils.py @@ -19,6 +19,7 @@ from models.friend_user import FriendUser from models.group_member_info import GroupInfoUser from models.level_user import LevelUser from models.user_shop_gold_log import UserShopGoldLog +from utils.decorator import Singleton from utils.manager import ( plugins2block_manager, StaticData, @@ -119,24 +120,18 @@ class ReturnException(Exception): pass +@Singleton class AuthChecker: """ 权限检查 """ - checker: Optional["AuthChecker"] = None - def __init__(self): self._flmt = FreqLimiter(Config.get_config("hook", "CHECK_NOTICE_INFO_CD")) self._flmt_g = FreqLimiter(Config.get_config("hook", "CHECK_NOTICE_INFO_CD")) self._flmt_s = FreqLimiter(Config.get_config("hook", "CHECK_NOTICE_INFO_CD")) self._flmt_c = FreqLimiter(Config.get_config("hook", "CHECK_NOTICE_INFO_CD")) - def __new__(cls, *args, **kwargs): - if not cls.checker: - cls.checker = super().__new__(cls) - return cls.checker - async def auth(self, matcher: Matcher, bot: Bot, event: Event): """ 说明: diff --git a/utils/decorator/__init__.py b/utils/decorator/__init__.py index e69de29b..b91f2a8a 100644 --- a/utils/decorator/__init__.py +++ b/utils/decorator/__init__.py @@ -0,0 +1,13 @@ +class Singleton: + + """ + 单例注解 + """ + + def __init__(self, cls): + self._cls = cls + + def __call__(self, *args, **kw): + if not hasattr(self, "_instance"): + self._instance = self._cls(*args, **kw) + return self._instance diff --git a/utils/decorator/limit.py b/utils/decorator/limit.py deleted file mode 100644 index 6fb66a5e..00000000 --- a/utils/decorator/limit.py +++ /dev/null @@ -1,6 +0,0 @@ - - - - - -