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,