From 4dc502a8b6f49b5a31bd8b335f4c00c6139af566 Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Wed, 8 Jan 2025 20:24:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E7=9B=91=E5=90=AC=E5=99=A8=E4=BC=9A=E8=AE=A9wakestage=E5=A4=B1?= =?UTF-8?q?=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/pipeline/process_stage/stage.py | 5 ++++- astrbot/core/pipeline/waking_check/stage.py | 3 +++ astrbot/core/platform/astr_message_event.py | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/astrbot/core/pipeline/process_stage/stage.py b/astrbot/core/pipeline/process_stage/stage.py index a1ab3ddef..e8b3db18a 100644 --- a/astrbot/core/pipeline/process_stage/stage.py +++ b/astrbot/core/pipeline/process_stage/stage.py @@ -43,7 +43,10 @@ class ProcessStage(Stage): yield # 调用提供商相关请求 - if self.ctx.astrbot_config['provider_settings'].get('enable', True) and not event._has_send_oper: + if not self.ctx.astrbot_config['provider_settings'].get('enable', True): + return + + if not event._has_send_oper and event.is_at_or_wake_command: if (event.get_result() and not event.get_result().is_stopped()) or not event.get_result(): provider = self.ctx.plugin_manager.context.get_using_provider() match provider.meta().type: diff --git a/astrbot/core/pipeline/waking_check/stage.py b/astrbot/core/pipeline/waking_check/stage.py index b1aa6059d..253fd9bf4 100644 --- a/astrbot/core/pipeline/waking_check/stage.py +++ b/astrbot/core/pipeline/waking_check/stage.py @@ -47,6 +47,7 @@ class WakingCheckStage(Stage): # 如果是群聊,且第一个消息段是 At 消息,但不是 At 机器人或 At 全体成员,则不唤醒 break is_wake = True + event.is_at_or_wake_command = True event.is_wake = True event.message_str = event.message_str[len(wake_prefix) :].strip() break @@ -60,11 +61,13 @@ class WakingCheckStage(Stage): is_wake = True event.is_wake = True wake_prefix = "" + event.is_at_or_wake_command = True break # 检查是否是私聊 if event.is_private_chat(): is_wake = True event.is_wake = True + event.is_at_or_wake_command = True wake_prefix = "" # 检查插件的 handler filter diff --git a/astrbot/core/platform/astr_message_event.py b/astrbot/core/platform/astr_message_event.py index 65b06149e..a743610a3 100644 --- a/astrbot/core/platform/astr_message_event.py +++ b/astrbot/core/platform/astr_message_event.py @@ -35,7 +35,8 @@ class AstrMessageEvent(abc.ABC): self.platform_meta = platform_meta self.session_id = session_id self.role = "member" - self.is_wake = False + self.is_wake = False # 是否通过 WakingStage + self.is_at_or_wake_command = False # 是否是 At 机器人或者带有唤醒词或者是私聊(事件监听器会让 is_wake 设为 True) self._extras = {} self.session = MessageSesion( platform_name=platform_meta.name,