From 896932e02d90eaee4cb7246333fe64eb32923f67 Mon Sep 17 00:00:00 2001 From: stellahsr Date: Tue, 10 Oct 2023 19:25:30 +0800 Subject: [PATCH] bug fix: add exception handle --- metagpt/minecraft_team.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/metagpt/minecraft_team.py b/metagpt/minecraft_team.py index 949eba081..89a9e6fa9 100644 --- a/metagpt/minecraft_team.py +++ b/metagpt/minecraft_team.py @@ -7,6 +7,7 @@ from pydantic import BaseModel, Field import json import re +import time from metagpt.logs import logger from metagpt.roles import Role @@ -299,9 +300,30 @@ class GameEnvironment(BaseModel, arbitrary_types_allowed=True): ) self.update_event(events) return events + except Exception as e: + ### add: 异常的话结束当前流程,继续后续运行 logger.error(f"Failed to retrieve Minecraft events: {str(e)}") - raise {} + time.sleep(3) # wait for mineflayer to exit + info = { + "task": self.current_task, + "success": False, + } + # reset bot status here + events = self.mf_instance.reset( + options={ + "mode": "hard", + "wait_ticks": 20, + "inventory": self.events[-1][1]["inventory"], + "equipment": self.events[-1][1]["status"]["equipment"], + "position": self.events[-1][1]["status"]["position"], + } + ) + self.update_event(events) + # use red color background to print the error + logger.info("Your last round rollout terminated due to error:") + logger.info(f"\033[41m{e}\033[0m") + async def on_event_execute(self, *args): """