From 081401c54e2afd63fbced6dd8eb50a30f7f8c1a9 Mon Sep 17 00:00:00 2001 From: K2cr2O1 <2221577113@qq.com> Date: Mon, 19 Jan 2026 14:21:46 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=9D=83=E9=99=90=E7=AE=A1=E7=90=86):=20?= =?UTF-8?q?=E5=A2=9E=E5=BC=BA=E6=9D=83=E9=99=90=E6=A3=80=E6=9F=A5=E7=9A=84?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=AE=89=E5=85=A8=E5=B9=B6=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=9D=83=E9=99=90=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复权限检查中可能传入非Permission类型导致的错误,将echo插件的权限引用从MessageEvent.ADMIN迁移到Permission.ADMIN --- core/managers/permission_manager.py | 6 ++++++ plugins/echo.py | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/core/managers/permission_manager.py b/core/managers/permission_manager.py index fa5f4ce..7fa2910 100644 --- a/core/managers/permission_manager.py +++ b/core/managers/permission_manager.py @@ -152,6 +152,12 @@ class PermissionManager(Singleton): 检查用户是否具有指定权限级别 """ user_permission = await self.get_user_permission(user_id) + + # 增强类型检查,防止将property对象等错误类型传递进来 + if not isinstance(required_permission, Permission): + logger.error(f"权限检查失败:required_permission 不是 Permission 枚举类型,而是 {type(required_permission).__name__}") + return False + return user_permission >= required_permission async def get_all_user_permissions(self) -> Dict[str, str]: diff --git a/plugins/echo.py b/plugins/echo.py index 6acbc11..d017712 100644 --- a/plugins/echo.py +++ b/plugins/echo.py @@ -6,6 +6,7 @@ Echo 与交互插件 from core.managers.command_manager import matcher from core.bot import Bot from models.events.message import MessageEvent +from core.permission import Permission __plugin_meta__ = { "name": "echo", @@ -13,7 +14,7 @@ __plugin_meta__ = { "usage": "/echo [内容] - 复读内容\n/赞我 - 让机器人给你点赞", } -@matcher.command("echo",permission=MessageEvent.ADMIN) +@matcher.command("echo", permission=Permission.ADMIN) async def handle_echo(bot: Bot, event: MessageEvent, args: list[str]): """ 处理 echo 指令,原样回复用户输入的内容