summaryrefslogtreecommitdiff
path: root/ATRI/exceptions.py
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/exceptions.py')
-rw-r--r--ATRI/exceptions.py35
1 files changed, 18 insertions, 17 deletions
diff --git a/ATRI/exceptions.py b/ATRI/exceptions.py
index d863777..6563e94 100644
--- a/ATRI/exceptions.py
+++ b/ATRI/exceptions.py
@@ -15,35 +15,34 @@ from nonebot.message import run_postprocessor
from .log import logger
-ERROR_DIR = Path('.') / 'ATRI' / 'data' / 'errors'
+ERROR_DIR = Path(".") / "ATRI" / "data" / "errors"
os.makedirs(ERROR_DIR, exist_ok=True)
def _save_error(prompt: str, content: str) -> str:
- track_id = ''.join(sample(string.ascii_letters + string.digits, 8))
+ track_id = "".join(sample(string.ascii_letters + string.digits, 8))
data = {
"track_id": track_id,
"prompt": prompt,
- "time": time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()),
- "content": content
+ "time": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
+ "content": content,
}
- path = ERROR_DIR / f'{track_id}.json'
- with open(path, 'w', encoding='utf-8') as r:
+ path = ERROR_DIR / f"{track_id}.json"
+ with open(path, "w", encoding="utf-8") as r:
r.write(json.dumps(data, indent=4))
return track_id
def load_error(track_id: str) -> dict:
- path = ERROR_DIR / f'{track_id}.json'
+ path = ERROR_DIR / f"{track_id}.json"
return json.loads(path.read_bytes())
class BaseBotException(BaseException):
- prompt: Optional[str] = 'ignore'
+ prompt: Optional[str] = "ignore"
def __init__(self, prompt: Optional[str]) -> None:
- self.prompt = prompt or self.__class__.prompt \
- or self.__class__.__name__
+ self.prompt = prompt or self.__class__.prompt or self.__class__.__name__
self.track_id = _save_error(self.prompt, format_exc())
super().__init__(self.prompt)
@@ -81,14 +80,16 @@ class FormatError(BaseBotException):
@run_postprocessor # type: ignore
-async def _track_error(matcher: Matcher,
- exception: Optional[Exception],
- bot: Bot,
- event: Event,
- state: T_State) -> None:
+async def _track_error(
+ matcher: Matcher,
+ exception: Optional[Exception],
+ bot: Bot,
+ event: Event,
+ state: T_State,
+) -> None:
if exception is None:
return
-
+
try:
raise exception
except BaseBotException as Error:
@@ -105,5 +106,5 @@ async def _track_error(matcher: Matcher,
f"触发原因: {prompt}\n"
"键入 来杯红茶 以联系维护者"
)
-
+
await bot.send(event, msg)