From 3cc497d6a633a7b729bbbcfd1956ad856a8acc5c Mon Sep 17 00:00:00 2001 From: HibiKier <775757368@qq.com> Date: Fri, 20 Dec 2024 17:16:34 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=A9=B9=20=E4=BC=98=E5=8C=96=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E5=8A=A0=E8=BD=BD=E4=B8=8E=E6=A8=A1=E5=9D=97=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E8=BD=AC=E6=8D=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zhenxun/builtin_plugins/init/init_plugin.py | 6 ++-- .../web_ui/api/tabs/manage/__init__.py | 17 +++++++---- .../web_ui/api/tabs/plugin_manage/__init__.py | 9 ++++-- zhenxun/utils/common_utils.py | 30 +++++++++++++++++++ 4 files changed, 51 insertions(+), 11 deletions(-) diff --git a/zhenxun/builtin_plugins/init/init_plugin.py b/zhenxun/builtin_plugins/init/init_plugin.py index ffcc8b4d..366df312 100644 --- a/zhenxun/builtin_plugins/init/init_plugin.py +++ b/zhenxun/builtin_plugins/init/init_plugin.py @@ -120,7 +120,7 @@ async def _(): if module_list := await PluginInfo.all().values("id", "module_path"): module2id = {m["module_path"]: m["id"] for m in module_list} for plugin in get_loaded_plugins(): - load_plugin.append(plugin.name) + load_plugin.append(plugin.module_name) await _handle_setting(plugin, plugin_list, limit_list, task_list) create_list = [] update_list = [] @@ -198,8 +198,8 @@ async def _(): 10, ) await data_migration() - await PluginInfo.filter(module__in=load_plugin).update(load_status=True) - await PluginInfo.filter(module__not_in=load_plugin).update(load_status=False) + await PluginInfo.filter(module_path__in=load_plugin).update(load_status=True) + await PluginInfo.filter(module_path__not_in=load_plugin).update(load_status=False) manager.init() if limit_list: for limit in limit_list: diff --git a/zhenxun/builtin_plugins/web_ui/api/tabs/manage/__init__.py b/zhenxun/builtin_plugins/web_ui/api/tabs/manage/__init__.py index 12d3cbdb..90db6935 100644 --- a/zhenxun/builtin_plugins/web_ui/api/tabs/manage/__init__.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/manage/__init__.py @@ -13,6 +13,7 @@ from zhenxun.models.plugin_info import PluginInfo from zhenxun.models.statistics import Statistics from zhenxun.models.task_info import TaskInfo from zhenxun.services.log import logger +from zhenxun.utils.common_utils import CommonUtils from zhenxun.utils.enum import RequestHandleType, RequestType from zhenxun.utils.exception import NotFoundError from zhenxun.utils.platform import PlatformUtils @@ -84,12 +85,16 @@ async def _(group: UpdateGroup) -> Result[str]: db_group.level = group.level db_group.status = group.status if group.close_plugins: - group.close_plugins = [f"<{module}" for module in group.close_plugins] - db_group.block_plugin = ",".join(group.close_plugins) + "," + db_group.block_plugin = CommonUtils.convert_module_format( + group.close_plugins + ) + else: + db_group.block_plugin = "" if group.task: if block_task := [t for t in task_list if t not in group.task]: - block_task = [f"<{module}" for module in block_task] - db_group.block_task = ",".join(block_task) + "," # type: ignore + db_group.block_task = CommonUtils.convert_module_format(block_task) # type: ignore + else: + db_group.block_task = CommonUtils.convert_module_format(task_list) # type: ignore await db_group.save( update_fields=["level", "status", "block_plugin", "block_task"] ) @@ -302,8 +307,8 @@ async def _(param: LeaveGroup) -> Result: platform = PlatformUtils.get_platform(bots[bot_id]) if platform != "qq": return Result.warning_("该平台不支持退群操作...") - group_list = await bots[bot_id].get_group_list() - if param.group_id not in [str(g["group_id"]) for g in group_list]: + group_list, _ = await PlatformUtils.get_group_list(bots[bot_id]) + if param.group_id not in [g.group_id for g in group_list]: return Result.warning_("Bot未在该群聊中...") await bots[bot_id].set_group_leave(group_id=param.group_id) return Result.ok(info="成功处理了请求!") diff --git a/zhenxun/builtin_plugins/web_ui/api/tabs/plugin_manage/__init__.py b/zhenxun/builtin_plugins/web_ui/api/tabs/plugin_manage/__init__.py index fb77ac2d..ebadeb9b 100644 --- a/zhenxun/builtin_plugins/web_ui/api/tabs/plugin_manage/__init__.py +++ b/zhenxun/builtin_plugins/web_ui/api/tabs/plugin_manage/__init__.py @@ -39,7 +39,7 @@ async def _( if plugin_type: query = query.filter(plugin_type__in=plugin_type, load_status=True) if menu_type: - query = query.filter(menu_type=menu_type) + query = query.filter(menu_type=menu_type, load_status=True) plugins = await query.all() for plugin in plugins: plugin_info = PluginInfo( @@ -116,6 +116,7 @@ async def _(plugin: UpdatePlugin) -> Result: if c.type and value is not None: value = cattrs.structure(value, c.type) Config.set_config(plugin.module, key, value) + Config.save(save_simple_data=True) except Exception as e: logger.error("调用API错误", "/update_plugins", e=e) return Result.fail(f"{type(e)}: {e}") @@ -152,7 +153,11 @@ async def _(param: PluginSwitch) -> Result: ) async def _() -> Result[list[str]]: menu_type_list = [] - result = await DbPluginInfo.annotate().values_list("menu_type", flat=True) + result = ( + await DbPluginInfo.filter(load_status=True) + .annotate() + .values_list("menu_type", flat=True) + ) for r in result: if r not in menu_type_list and r: menu_type_list.append(r) diff --git a/zhenxun/utils/common_utils.py b/zhenxun/utils/common_utils.py index 76445649..61259bd8 100644 --- a/zhenxun/utils/common_utils.py +++ b/zhenxun/utils/common_utils.py @@ -1,3 +1,5 @@ +from typing import overload + from nonebot.adapters import Bot from nonebot_plugin_uninfo import Session, SupportScope, Uninfo, get_interface @@ -62,6 +64,34 @@ class CommonUtils: return True return False + @staticmethod + def format(name: str) -> str: + return f"<{name}," + + @overload + @classmethod + def convert_module_format(cls, data: str) -> list[str]: ... + + @overload + @classmethod + def convert_module_format(cls, data: list[str]) -> str: ... + + @classmethod + def convert_module_format(cls, data: str | list[str]) -> str | list[str]: + """ + 在 `