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,