From fdea38f2a8197aaeb8a0e96e777b6140399375c1 Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Fri, 8 Aug 2025 00:02:35 +0800 Subject: [PATCH 1/2] Update heartFC_chat.py --- src/chat/chat_loop/heartFC_chat.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/chat/chat_loop/heartFC_chat.py b/src/chat/chat_loop/heartFC_chat.py index d51fa96b0..803b9c129 100644 --- a/src/chat/chat_loop/heartFC_chat.py +++ b/src/chat/chat_loop/heartFC_chat.py @@ -606,21 +606,24 @@ class HeartFChatting: async def _main_chat_loop(self): """主循环,持续进行计划并可能回复消息,直到被外部取消。""" try: - while self.running: # 主循环 - success = await self._loopbody() - await asyncio.sleep(0.1) - if not success: - break - - logger.info(f"{self.log_prefix} 麦麦已强制离开聊天") + while self.running: + try: + # 主循环 + success = await self._loopbody() + await asyncio.sleep(0.1) + if not success: + break + except Exception: + logger.error(f"{self.log_prefix} 麦麦聊天循环意外错误") + print(traceback.format_exc()) + # 理论上不能到这里 except asyncio.CancelledError: # 设置了关闭标志位后被取消是正常流程 logger.info(f"{self.log_prefix} 麦麦已关闭聊天") except Exception: logger.error(f"{self.log_prefix} 麦麦聊天意外错误") print(traceback.format_exc()) - # 理论上不能到这里 - logger.error(f"{self.log_prefix} 麦麦聊天意外错误,结束了聊天循环") + logger.error(f"{self.log_prefix} 结束了聊天循环") async def _handle_action( self, From a7bd6a05b3eced49b98b40ee513aefacbaa2892a Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Fri, 8 Aug 2025 00:05:52 +0800 Subject: [PATCH 2/2] Update heartFC_chat.py --- src/chat/chat_loop/heartFC_chat.py | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/chat/chat_loop/heartFC_chat.py b/src/chat/chat_loop/heartFC_chat.py index 803b9c129..0c80ef83a 100644 --- a/src/chat/chat_loop/heartFC_chat.py +++ b/src/chat/chat_loop/heartFC_chat.py @@ -607,23 +607,19 @@ class HeartFChatting: """主循环,持续进行计划并可能回复消息,直到被外部取消。""" try: while self.running: - try: - # 主循环 - success = await self._loopbody() - await asyncio.sleep(0.1) - if not success: - break - except Exception: - logger.error(f"{self.log_prefix} 麦麦聊天循环意外错误") - print(traceback.format_exc()) - # 理论上不能到这里 + # 主循环 + success = await self._loopbody() + await asyncio.sleep(0.1) + if not success: + break except asyncio.CancelledError: # 设置了关闭标志位后被取消是正常流程 logger.info(f"{self.log_prefix} 麦麦已关闭聊天") except Exception: - logger.error(f"{self.log_prefix} 麦麦聊天意外错误") + logger.error(f"{self.log_prefix} 麦麦聊天意外错误,尝试重新启动") print(traceback.format_exc()) - logger.error(f"{self.log_prefix} 结束了聊天循环") + self._loop_task = asyncio.create_task(self._main_chat_loop()) + logger.error(f"{self.log_prefix} 结束了当前聊天循环") async def _handle_action( self,