diff --git a/src/chat/chat_loop/heartFC_chat.py b/src/chat/chat_loop/heartFC_chat.py index 891cc0eed..69453a3bc 100644 --- a/src/chat/chat_loop/heartFC_chat.py +++ b/src/chat/chat_loop/heartFC_chat.py @@ -614,21 +614,20 @@ class HeartFChatting: async def _main_chat_loop(self): """主循环,持续进行计划并可能回复消息,直到被外部取消。""" try: - while self.running: # 主循环 + while self.running: + # 主循环 success = await self._loopbody() await asyncio.sleep(0.1) if not success: break - - logger.info(f"{self.log_prefix} 麦麦已强制离开聊天") 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,