From cd39d6367b92cde1e779b867ebddfdf793907a39 Mon Sep 17 00:00:00 2001 From: bcbcbc Date: Tue, 18 Aug 2026 20:08:35 +0800 Subject: [PATCH 1/2] fix: dispatch OnAfterMessageSentEvent after streaming delivery --- astrbot/core/pipeline/respond/stage.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/astrbot/core/pipeline/respond/stage.py b/astrbot/core/pipeline/respond/stage.py index 433acb4de5..8617b83625 100644 --- a/astrbot/core/pipeline/respond/stage.py +++ b/astrbot/core/pipeline/respond/stage.py @@ -222,6 +222,9 @@ async def process( ) logger.info(f"Applying streaming output ({event.get_platform_id()}).") await event.send_streaming(result.async_stream, realtime_segmenting) + if await call_event_hook(event, EventType.OnAfterMessageSentEvent): + return + event.clear_result() return if len(result.chain) > 0: # 检查路径映射 From 63292670fe38441e377a408a41c7f0b3a2ae1551 Mon Sep 17 00:00:00 2001 From: bingchengcc Date: Wed, 19 Aug 2026 12:20:33 +0800 Subject: [PATCH 2/2] refactor: extract _after_sent_cleanup helper for shared event dispatch --- astrbot/core/pipeline/respond/stage.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/astrbot/core/pipeline/respond/stage.py b/astrbot/core/pipeline/respond/stage.py index 8617b83625..9ad7438bb3 100644 --- a/astrbot/core/pipeline/respond/stage.py +++ b/astrbot/core/pipeline/respond/stage.py @@ -127,6 +127,12 @@ async def _is_empty_message_chain(self, chain: list[BaseMessageComponent]) -> bo # 如果所有组件都为空 return True + async def _after_sent_cleanup(self, event: AstrMessageEvent) -> bool: + if await call_event_hook(event, EventType.OnAfterMessageSentEvent): + return True + event.clear_result() + return False + def is_seg_reply_required(self, event: AstrMessageEvent) -> bool: """检查是否需要分段回复""" if not self.enable_seg: @@ -222,9 +228,8 @@ async def process( ) logger.info(f"Applying streaming output ({event.get_platform_id()}).") await event.send_streaming(result.async_stream, realtime_segmenting) - if await call_event_hook(event, EventType.OnAfterMessageSentEvent): + if await self._after_sent_cleanup(event): return - event.clear_result() return if len(result.chain) > 0: # 检查路径映射 @@ -322,7 +327,5 @@ async def process( exc_info=True, ) - if await call_event_hook(event, EventType.OnAfterMessageSentEvent): + if await self._after_sent_cleanup(event): return - - event.clear_result()