From b062e83d540481a535cae6eacd45b9ecd99c22a4 Mon Sep 17 00:00:00 2001 From: Soulter <37870767+Soulter@users.noreply.github.com> Date: Sat, 15 Nov 2025 16:39:49 +0800 Subject: [PATCH] refactor: remove redundant session lock management from message sending logic in RespondStage (#3645) fixes: #3644 Co-authored-by: Dt8333 --- astrbot/core/pipeline/respond/stage.py | 30 ++++++++++++-------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/astrbot/core/pipeline/respond/stage.py b/astrbot/core/pipeline/respond/stage.py index 86946d023..760649563 100644 --- a/astrbot/core/pipeline/respond/stage.py +++ b/astrbot/core/pipeline/respond/stage.py @@ -10,7 +10,6 @@ from astrbot.core.message.message_event_result import MessageChain, ResultConten from astrbot.core.platform.astr_message_event import AstrMessageEvent from astrbot.core.star.star_handler import EventType from astrbot.core.utils.path_util import path_Mapping -from astrbot.core.utils.session_lock import session_lock_manager from ..context import PipelineContext, call_event_hook from ..stage import Stage, register_stage @@ -221,21 +220,20 @@ class RespondStage(Stage): f"实际消息链为空, 跳过发送阶段。header_chain: {header_comps}, actual_chain: {result.chain}", ) return - async with session_lock_manager.acquire_lock(event.unified_msg_origin): - for comp in result.chain: - i = await self._calc_comp_interval(comp) - await asyncio.sleep(i) - try: - if comp.type in need_separately: - await event.send(MessageChain([comp])) - else: - await event.send(MessageChain([*header_comps, comp])) - header_comps.clear() - except Exception as e: - logger.error( - f"发送消息链失败: chain = {MessageChain([comp])}, error = {e}", - exc_info=True, - ) + for comp in result.chain: + i = await self._calc_comp_interval(comp) + await asyncio.sleep(i) + try: + if comp.type in need_separately: + await event.send(MessageChain([comp])) + else: + await event.send(MessageChain([*header_comps, comp])) + header_comps.clear() + except Exception as e: + logger.error( + f"发送消息链失败: chain = {MessageChain([comp])}, error = {e}", + exc_info=True, + ) else: if all( comp.type in {ComponentType.Reply, ComponentType.At}