From 47e253d76c33e79c100176de8309687cb403a3c6 Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Tue, 4 Feb 2025 23:31:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=9D=83=E9=99=90?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E7=AE=97=E5=AD=90=E5=AF=BC=E8=87=B4=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20#350?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/pipeline/waking_check/stage.py | 15 ++++++++++++++- astrbot/core/star/filter/permission.py | 5 +++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/astrbot/core/pipeline/waking_check/stage.py b/astrbot/core/pipeline/waking_check/stage.py index 253fd9bf4..89fccaff6 100644 --- a/astrbot/core/pipeline/waking_check/stage.py +++ b/astrbot/core/pipeline/waking_check/stage.py @@ -2,10 +2,11 @@ from ..stage import Stage, register_stage from ..context import PipelineContext from typing import Union, AsyncGenerator from astrbot.core.platform.astr_message_event import AstrMessageEvent -from astrbot.core.message.message_event_result import MessageEventResult +from astrbot.core.message.message_event_result import MessageEventResult, MessageChain from astrbot.core.message.components import At from astrbot.core.star.star_handler import star_handlers_registry, EventType from astrbot.core.star.filter.command_group import CommandGroupFilter +from astrbot.core.star.filter.permission import PermissionTypeFilter @register_stage @@ -77,6 +78,8 @@ class WakingCheckStage(Stage): # filter 需要满足 AND 的逻辑关系 passed = True child_command_handler_md = None + + permission_not_pass = False if len(handler.event_filters) == 0: # 不可能有这种情况, 也不允许有这种情况 @@ -94,6 +97,10 @@ class WakingCheckStage(Stage): else: handler = child_command_handler_md # handler 覆盖 break + elif isinstance(filter, PermissionTypeFilter): + if not filter.filter(event, self.ctx.astrbot_config): + print("permission not pass") + permission_not_pass = True else: if not filter.filter(event, self.ctx.astrbot_config): passed = False @@ -111,6 +118,12 @@ class WakingCheckStage(Stage): break if passed: + + if permission_not_pass: + await event.send(MessageChain().message(f"ID {event.get_sender_id()} 权限不足")) + event.stop_event() + return + is_wake = True event.is_wake = True diff --git a/astrbot/core/star/filter/permission.py b/astrbot/core/star/filter/permission.py index 0910b615a..5e961aa5b 100644 --- a/astrbot/core/star/filter/permission.py +++ b/astrbot/core/star/filter/permission.py @@ -19,7 +19,8 @@ class PermissionTypeFilter(HandlerFilter): ''' if self.permission_type == PermissionType.ADMIN: if not event.is_admin(): - event.stop_event() - raise ValueError(f"您 (ID: {event.get_sender_id()}) 没有权限操作管理员指令。") + # event.stop_event() + # raise ValueError(f"您 (ID: {event.get_sender_id()}) 没有权限操作管理员指令。") + return False return True