From 856976526f89367d3c020ab3d1215b8b92f3cede Mon Sep 17 00:00:00 2001 From: HibiKier <45528451+HibiKier@users.noreply.github.com> Date: Sun, 6 Oct 2024 18:16:35 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20=E4=BF=AE=E6=94=B9=E9=99=90?= =?UTF-8?q?=E5=88=B6=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6key=20(#1685)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../builtin_plugins/hooks/_auth_checker.py | 10 +++--- zhenxun/builtin_plugins/hooks/ban_hook.py | 9 +++-- zhenxun/builtin_plugins/init/manager.py | 34 +++++++++---------- .../platform/qq/group_handle/data_source.py | 2 +- zhenxun/models/ban_console.py | 2 +- 5 files changed, 27 insertions(+), 30 deletions(-) diff --git a/zhenxun/builtin_plugins/hooks/_auth_checker.py b/zhenxun/builtin_plugins/hooks/_auth_checker.py index e12eb0ad..4b0b757b 100644 --- a/zhenxun/builtin_plugins/hooks/_auth_checker.py +++ b/zhenxun/builtin_plugins/hooks/_auth_checker.py @@ -88,7 +88,7 @@ class LimitManage: @classmethod async def check( cls, - module_path: str, + module: str, user_id: str, group_id: str | None, channel_id: str | None, @@ -106,11 +106,11 @@ class LimitManage: 异常: IgnoredException: IgnoredException """ - if limit_model := cls.cd_limit.get(module_path): + if limit_model := cls.cd_limit.get(module): await cls.__check(limit_model, user_id, group_id, channel_id, session) - if limit_model := cls.block_limit.get(module_path): + if limit_model := cls.block_limit.get(module): await cls.__check(limit_model, user_id, group_id, channel_id, session) - if limit_model := cls.count_limit.get(module_path): + if limit_model := cls.count_limit.get(module): await cls.__check(limit_model, user_id, group_id, channel_id, session) @classmethod @@ -298,7 +298,7 @@ class AuthChecker: LimitManage.add_limit(limit) if user_id: await LimitManage.check( - plugin.module_path, user_id, group_id, channel_id, session + plugin.module, user_id, group_id, channel_id, session ) async def auth_plugin( diff --git a/zhenxun/builtin_plugins/hooks/ban_hook.py b/zhenxun/builtin_plugins/hooks/ban_hook.py index b0d3d4d6..893f45e5 100644 --- a/zhenxun/builtin_plugins/hooks/ban_hook.py +++ b/zhenxun/builtin_plugins/hooks/ban_hook.py @@ -1,5 +1,3 @@ -import logging - from nonebot.typing import T_State from nonebot.matcher import Matcher from nonebot_plugin_alconna import At @@ -8,6 +6,7 @@ from nonebot.message import run_preprocessor from nonebot.exception import IgnoredException from nonebot_plugin_session import EventSession +from zhenxun.services.log import logger from zhenxun.configs.config import Config from zhenxun.utils.enum import PluginType from zhenxun.utils.utils import FreqLimiter @@ -41,11 +40,11 @@ async def _( if user_id in bot.config.superusers: return if await BanConsole.is_ban(None, group_id): - logging.debug("群组处于黑名单中...", "ban_hook") + logger.debug("群组处于黑名单中...", "ban_hook") raise IgnoredException("群组处于黑名单中...") if g := await GroupConsole.get_group(group_id): if g.level < 0: - logging.debug("群黑名单, 群权限-1...", "ban_hook") + logger.debug("群黑名单, 群权限-1...", "ban_hook") raise IgnoredException("群黑名单, 群权限-1..") if user_id: ban_result = Config.get_config("hook", "BAN_RESULT") @@ -75,5 +74,5 @@ async def _( f"{ban_result}\n在..在 {time_str} 后才会理你喔", ] ).send() - logging.debug("用户处于黑名单中...", "ban_hook") + logger.debug("用户处于黑名单中...", "ban_hook") raise IgnoredException("用户处于黑名单中...") diff --git a/zhenxun/builtin_plugins/init/manager.py b/zhenxun/builtin_plugins/init/manager.py index 05b4779d..c02718d0 100644 --- a/zhenxun/builtin_plugins/init/manager.py +++ b/zhenxun/builtin_plugins/init/manager.py @@ -73,7 +73,7 @@ class Manager: def add( self, - module_path: str, + module: str, data: BaseBlock | PluginCdBlock | PluginCountBlock | PluginLimit, ): """添加限制""" @@ -106,20 +106,20 @@ class Manager: max_count=data.max_count, ) if isinstance(data, PluginCdBlock): - self.cd_data[module_path] = data + self.cd_data[module] = data elif isinstance(data, PluginCountBlock): - self.count_data[module_path] = data + self.count_data[module] = data elif isinstance(data, BaseBlock): - self.block_data[module_path] = data + self.block_data[module] = data - def exist(self, module_path: str, type: PluginLimitType): + def exist(self, module: str, type: PluginLimitType): """是否存在""" if type == PluginLimitType.CD: - return module_path in self.cd_data + return module in self.cd_data elif type == PluginLimitType.BLOCK: - return module_path in self.block_data + return module in self.block_data elif type == PluginLimitType.COUNT: - return module_path in self.count_data + return module in self.count_data def init(self): if not self.cd_file.exists(): @@ -270,10 +270,10 @@ class Manager: if not db_data: return ( PluginLimit( - module=k.split(".")[-1], - module_path=k, + module=k, + module_path=module2plugin[k].module_path, limit_type=limit_type, - plugin=module2plugin.get(k), + plugin=module2plugin[k], cd=getattr(limit, "cd", None), max_count=getattr(limit, "max_count", None), status=limit.status, @@ -329,12 +329,10 @@ class Manager: ] if data := self.__get_file_data(limit_type): db_type_limit_modules = [ - (limit.module_path, limit.id) for limit in db_type_limits + (limit.module, limit.id) for limit in db_type_limits ] delete_list.extend( - id - for module_path, id in db_type_limit_modules - if module_path not in data.keys() + id for module, id in db_type_limit_modules if module not in data.keys() ) for k, v in data.items(): if not module2plugin.get(k): @@ -343,7 +341,7 @@ class Manager: f"插件模块 {k} 未加载,已过滤当前 {v._type} 限制..." ) continue - db_data = [limit for limit in db_type_limits if limit.module_path == k] + db_data = [limit for limit in db_type_limits if limit.module == k] db_data, is_create = self.__set_data( k, db_data[0] if db_data else None, v, limit_type, module2plugin ) @@ -369,8 +367,8 @@ class Manager: + list(self.block_data.keys()) + list(self.count_data.keys()) ) - plugins = await PluginInfo.get_plugins(module_path__in=modules) - module2plugin = {p.module_path: p for p in plugins} + plugins = await PluginInfo.get_plugins(module__in=modules) + module2plugin = {p.module: p for p in plugins} create_list, update_list, delete_list = self.__set_db_limits( db_limits, module2plugin, PluginLimitType.CD ) diff --git a/zhenxun/builtin_plugins/platform/qq/group_handle/data_source.py b/zhenxun/builtin_plugins/platform/qq/group_handle/data_source.py index 87b34c82..01b47a9c 100644 --- a/zhenxun/builtin_plugins/platform/qq/group_handle/data_source.py +++ b/zhenxun/builtin_plugins/platform/qq/group_handle/data_source.py @@ -55,7 +55,7 @@ class GroupManager: block_plugin = "" if plugin_list := await PluginInfo.filter(default_status=False).all(): for plugin in plugin_list: - block_plugin += f"{plugin.module}," + block_plugin += f"<{plugin.module}," group_info = await bot.get_group_info(group_id=group_id) await GroupConsole.create( group_id=group_info["group_id"], diff --git a/zhenxun/models/ban_console.py b/zhenxun/models/ban_console.py index ebad37a9..d66d8c2c 100644 --- a/zhenxun/models/ban_console.py +++ b/zhenxun/models/ban_console.py @@ -51,7 +51,7 @@ class BanConsole(Model): else await cls.get_or_none(user_id=user_id, group_id__isnull=True) ) else: - return await cls.get_or_none(user_id=user_id, group_id=group_id) + return await cls.get_or_none(user_id="", group_id=group_id) @classmethod async def check_ban_level(