From 7ba30350066da009f52f6edce47746db07b42427 Mon Sep 17 00:00:00 2001 From: alcoholicgirl <2680813175@qq.com> Date: Mon, 27 Apr 2026 23:19:59 +0800 Subject: [PATCH] robustness + regex fix --- konabot/plugins/marchtoy/command.py | 2 +- konabot/plugins/marchtoy/utilities.py | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/konabot/plugins/marchtoy/command.py b/konabot/plugins/marchtoy/command.py index 9243299..3e7fbdd 100644 --- a/konabot/plugins/marchtoy/command.py +++ b/konabot/plugins/marchtoy/command.py @@ -42,7 +42,7 @@ class CommandChainParser: class CommandParser: - CMD_PATTERN = r"^[a-zA-Z]+(?:\(([0-9.]+|(([a-zA-Z0-9]+(?:\(([^()]*|(?1)+)(\s*\,\s*(?1))*\))?)(\.(?1))*))(\s*\,\s*(?1))*\))?" + CMD_PATTERN = r"^[a-zA-Z]+(?:\(([0-9.\-+]+|(([a-zA-Z0-9]+(?:\(([^()]*|(?1)+)(\s*\,\s*(?1))*\))?)(\.(?1))*))(\s*\,\s*(?1))*\))?" ID_PATTERN = r"^[a-zA-Z]+(?=\(|\.|$)" ARG_PATTERN = CommandChainParser.CHAIN_PATTERN TRIM_PATTERN = r"^\s*\,\s*" diff --git a/konabot/plugins/marchtoy/utilities.py b/konabot/plugins/marchtoy/utilities.py index ed478d5..c7d5a4d 100644 --- a/konabot/plugins/marchtoy/utilities.py +++ b/konabot/plugins/marchtoy/utilities.py @@ -19,6 +19,7 @@ TODO: 除零出现 nan 情况的单独处理 class ArgParser: @staticmethod def to_params(args: str, delim: str = ',') -> list[str]: + raise DeprecationWarning _params = args.replace(" ", "").split(delim) params: list[str] = [] # 还是避免 while 为好 @@ -28,11 +29,14 @@ class ArgParser: return params @staticmethod - def as_float(args: list[str], default: float = 0.0) -> float: + def as_float(args: list[str] | str, default: float = 0.0) -> float: try: - if len(args) >= 1: + if isinstance(args, list) and len(args) >= 1: x = float(args[0]) return x + elif isinstance(args, str): + x = float(args) + return x except: # raise Exception(f"cannot parse {args}") return default @@ -66,9 +70,9 @@ class ArgParser: y = float(args[1]) z = float(args[2]) return np.array((x, y, z)) + return default except: raise Exception(f"cannot parse {args}") - return default @staticmethod def as_vec4(