diff --git a/alas.py b/alas.py index af6667ba5..ccee3200e 100644 --- a/alas.py +++ b/alas.py @@ -593,6 +593,7 @@ from module.counter import MaxCounter from typing import Dict from module.device.my_assets import my_OTHERS_LOGIN_CONFIRM from module.config.utils import filepath_i18n, read_file +from module.luahook.exception import CrackerError class FailedTaskCounter: @@ -783,6 +784,22 @@ class AzurLaneAutoScript(AzurLaneAutoScript): if i.next_run < target: self.config.task_delay(target=target, task=i.command) + def handle_CrackerError(self, e) -> bool: + logger.critical(e) + self.save_error_log() + if self.is_fatal_error_restart: + logger.info("Fatal error occured, call restart") + self.config.task_call('Restart') + self.device.sleep(10) + return False + else: + handle_notify( + self.config.Error_OnePushConfig, + title=f"Alas <{self.config_name}> crashed", + content=f"<{self.config_name}> Exception occured", + ) + exit(1) + def handle_OthersLogin(self, e) -> bool: logger.warning("Detected others' login") self.delay_all_tasks() @@ -829,6 +846,8 @@ class AzurLaneAutoScript(AzurLaneAutoScript): return self.handle_RequestHumanTakeover(e) except OthersLogin as e: return self.handle_OthersLogin(e) + except CrackerError as e: + return self.handle_CrackerError(e) except Exception as e: return self.handle_Exception(e) diff --git a/module/luahook/api.py b/module/luahook/api.py index ccc6bf3ea..9bc3a0616 100644 --- a/module/luahook/api.py +++ b/module/luahook/api.py @@ -58,7 +58,7 @@ class CrackApi: self.api_url = base_url self.timeout = timeout - @retry(tries=3, delay=3) + @retry(tries=3, delay=3, logger=None) def get(self, path, **kwargs): args = [] for k, v in kwargs.items(): @@ -81,7 +81,7 @@ class CrackApi: raise CrackerError(f'CrackApi response error: {response.status_code}') return response - @retry(tries=3, delay=3) + @retry(tries=3, delay=3, logger=None) def post(self, path, data=None): url = f'{self.api_url}/{path}' if data is not None and isinstance(data, dict):