44from astrbot .api .event import AstrMessageEvent , MessageEventResult
55from astrbot .core .platform .astr_message_event import MessageSession
66from astrbot .core .platform .message_type import MessageType
7+ from astrbot .core .utils .active_event_registry import active_event_registry
78
89from .utils .rst_scene import RstScene
910
@@ -62,6 +63,7 @@ async def reset(self, message: AstrMessageEvent) -> None:
6263
6364 agent_runner_type = cfg ["provider_settings" ]["agent_runner_type" ]
6465 if agent_runner_type in THIRD_PARTY_AGENT_RUNNER_KEY :
66+ active_event_registry .stop_all (umo , exclude = message )
6567 await sp .remove_async (
6668 scope = "umo" ,
6769 scope_id = umo ,
@@ -86,6 +88,8 @@ async def reset(self, message: AstrMessageEvent) -> None:
8688 )
8789 return
8890
91+ active_event_registry .stop_all (umo , exclude = message )
92+
8993 await self .context .conversation_manager .update_conversation (
9094 umo ,
9195 cid ,
@@ -221,6 +225,7 @@ async def new_conv(self, message: AstrMessageEvent) -> None:
221225 cfg = self .context .get_config (umo = message .unified_msg_origin )
222226 agent_runner_type = cfg ["provider_settings" ]["agent_runner_type" ]
223227 if agent_runner_type in THIRD_PARTY_AGENT_RUNNER_KEY :
228+ active_event_registry .stop_all (message .unified_msg_origin , exclude = message )
224229 await sp .remove_async (
225230 scope = "umo" ,
226231 scope_id = message .unified_msg_origin ,
@@ -229,6 +234,7 @@ async def new_conv(self, message: AstrMessageEvent) -> None:
229234 message .set_result (MessageEventResult ().message ("已创建新对话。" ))
230235 return
231236
237+ active_event_registry .stop_all (message .unified_msg_origin , exclude = message )
232238 cpersona = await self ._get_current_persona_id (message .unified_msg_origin )
233239 cid = await self .context .conversation_manager .new_conversation (
234240 message .unified_msg_origin ,
@@ -321,7 +327,8 @@ async def rename_conv(self, message: AstrMessageEvent, new_name: str = "") -> No
321327
322328 async def del_conv (self , message : AstrMessageEvent ) -> None :
323329 """删除当前对话"""
324- cfg = self .context .get_config (umo = message .unified_msg_origin )
330+ umo = message .unified_msg_origin
331+ cfg = self .context .get_config (umo = umo )
325332 is_unique_session = cfg ["platform_settings" ]["unique_session" ]
326333 if message .get_group_id () and not is_unique_session and message .role != "admin" :
327334 # 群聊,没开独立会话,发送人不是管理员
@@ -334,18 +341,17 @@ async def del_conv(self, message: AstrMessageEvent) -> None:
334341
335342 agent_runner_type = cfg ["provider_settings" ]["agent_runner_type" ]
336343 if agent_runner_type in THIRD_PARTY_AGENT_RUNNER_KEY :
344+ active_event_registry .stop_all (umo , exclude = message )
337345 await sp .remove_async (
338346 scope = "umo" ,
339- scope_id = message . unified_msg_origin ,
347+ scope_id = umo ,
340348 key = THIRD_PARTY_AGENT_RUNNER_KEY [agent_runner_type ],
341349 )
342350 message .set_result (MessageEventResult ().message ("重置对话成功。" ))
343351 return
344352
345353 session_curr_cid = (
346- await self .context .conversation_manager .get_curr_conversation_id (
347- message .unified_msg_origin ,
348- )
354+ await self .context .conversation_manager .get_curr_conversation_id (umo )
349355 )
350356
351357 if not session_curr_cid :
@@ -356,8 +362,10 @@ async def del_conv(self, message: AstrMessageEvent) -> None:
356362 )
357363 return
358364
365+ active_event_registry .stop_all (umo , exclude = message )
366+
359367 await self .context .conversation_manager .delete_conversation (
360- message . unified_msg_origin ,
368+ umo ,
361369 session_curr_cid ,
362370 )
363371
0 commit comments