fix: 修复事件监听器会让wakestage失效的问题

This commit is contained in:
Soulter
2025-01-08 20:24:01 +08:00
parent b1d1a13d5f
commit 4dc502a8b6
3 changed files with 9 additions and 2 deletions
+4 -1
View File
@@ -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:
@@ -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
+2 -1
View File
@@ -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,