From 46ecb16949b83c69422b874d1e4c74ff13f5c502 Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Sun, 9 Mar 2025 11:12:24 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix:=20=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=AD=A3=E5=B8=B8=E4=BF=9D=E5=AD=98=E6=8F=92=E4=BB=B6=E7=9A=84?= =?UTF-8?q?=20list=20=E7=B1=BB=E5=9E=8B=E9=85=8D=E7=BD=AE=20#737?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/dashboard/routes/config.py | 8 +++++--- dashboard/src/views/ExtensionPage.vue | 4 ++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/astrbot/dashboard/routes/config.py b/astrbot/dashboard/routes/config.py index 15fb53402..54140d92a 100644 --- a/astrbot/dashboard/routes/config.py +++ b/astrbot/dashboard/routes/config.py @@ -39,9 +39,10 @@ def validate_config( data[key] = DEFAULT_VALUE_MAP[meta["type"]] continue # 递归验证 - if meta["type"] == "list" and isinstance(value, list): - for item in value: - validate(item, meta["items"], path=f"{path}{key}.") + if meta["type"] == "list" and not isinstance(value, list): + errors.append( + f"错误的类型 {path}{key}: 期望是 list, 得到了 {type(value).__name__}" + ) elif meta["type"] == "object" and isinstance(value, dict): validate(value, meta["items"], path=f"{path}{key}.") @@ -103,6 +104,7 @@ def save_config(post_config: dict, config: AstrBotConfig, is_core: bool = False) except BaseException as e: logger.error(traceback.format_exc()) logger.warning(f"验证配置时出现异常: {e}") + raise ValueError(f"验证配置时出现异常: {e}") if errors: raise ValueError(f"格式校验未通过: {errors}") config.save_config(post_config) diff --git a/dashboard/src/views/ExtensionPage.vue b/dashboard/src/views/ExtensionPage.vue index 7a0d206ba..fefe850e6 100644 --- a/dashboard/src/views/ExtensionPage.vue +++ b/dashboard/src/views/ExtensionPage.vue @@ -183,6 +183,7 @@ const openExtensionConfig = async (extension_name) => { const res = await axios.get('/api/config/get?plugin_name=' + extension_name); extension_config.metadata = res.data.data.metadata; extension_config.config = res.data.data.config; + } catch (err) { toast(err, "error"); } @@ -197,6 +198,9 @@ const updateConfig = async () => { toast(res.data.message, "error"); } configDialog.value = false; + extension_config.metadata = {}; + extension_config.config = {}; + getExtensions(); } catch (err) { toast(err, "error"); }