From 1e3d3b922c128b3f3f6dafc535263ed20353c105 Mon Sep 17 00:00:00 2001 From: SXP-Simon Date: Thu, 12 Mar 2026 15:16:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E7=BE=A4=E7=9B=B8?= =?UTF-8?q?=E5=86=8C=E4=B8=8A=E4=BC=A0=E4=B8=A5=E6=A0=BC=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 _conf_schema.json 中增加 group_album_strict_mode 开关 - 修改 ReportDispatcher,在严格模式下禁止回退到默认相册 - 优化 OneBotAdapter 的日志输出,使其符合决策逻辑 --- _conf_schema.json | 6 ++++++ src/infrastructure/config/config_manager.py | 9 +++++++++ .../platform/adapters/onebot_adapter.py | 2 +- src/infrastructure/reporting/dispatcher.py | 18 ++++++++++++++++-- 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/_conf_schema.json b/_conf_schema.json index 1c0924f..d1a4739 100644 --- a/_conf_schema.json +++ b/_conf_schema.json @@ -349,6 +349,12 @@ "description": "目标群相册名称", "default": "", "hint": "指定上传到哪个群相册(请确保已经存在这个名称的相册)。留空则上传到群默认相册。如果指定的相册不存在,将回退到默认相册" + }, + "group_album_strict_mode": { + "type": "bool", + "description": "群相册上传严格模式", + "default": true, + "hint": "当启用该开关且设置了目标群相册名称时:如果插件在目标群组中找不到同名的相册,将放弃上传。关闭该开关时,找不到目标相册将回退到群组默认的第一个相册。" } } }, diff --git a/src/infrastructure/config/config_manager.py b/src/infrastructure/config/config_manager.py index 74c0b37..d51cdcd 100644 --- a/src/infrastructure/config/config_manager.py +++ b/src/infrastructure/config/config_manager.py @@ -433,6 +433,15 @@ class ConfigManager: """获取目标群相册名称,空字符串表示默认相册""" return self._get_group("qq_group_upload").get("group_album_name", "") + def get_group_album_strict_mode(self) -> bool: + """获取极简模式开关:当未找到指定相册时是否禁止回退到默认相册""" + return self._get_group("qq_group_upload").get("group_album_strict_mode", False) + + def set_group_album_strict_mode(self, enabled: bool): + """设置群相册上传严格模式""" + self._ensure_group("qq_group_upload")["group_album_strict_mode"] = enabled + self.config.save_config() + # ========== 增量分析配置 ========== def get_incremental_enabled(self) -> bool: diff --git a/src/infrastructure/platform/adapters/onebot_adapter.py b/src/infrastructure/platform/adapters/onebot_adapter.py index 3bbf841..88ebdc0 100644 --- a/src/infrastructure/platform/adapters/onebot_adapter.py +++ b/src/infrastructure/platform/adapters/onebot_adapter.py @@ -1318,5 +1318,5 @@ class OneBotAdapter(PlatformAdapter): logger.debug(f"找到群相册: {album_name} [ID: {aid}]") return str(aid) - logger.info(f"未找到群相册 '{album_name}' (群 {group_id}),将使用默认相册") + logger.info(f"未找到群相册 '{album_name}' (群 {group_id})") return None diff --git a/src/infrastructure/reporting/dispatcher.py b/src/infrastructure/reporting/dispatcher.py index f65ca6b..51892e2 100644 --- a/src/infrastructure/reporting/dispatcher.py +++ b/src/infrastructure/reporting/dispatcher.py @@ -241,9 +241,23 @@ class ReportDispatcher: """上传图片到群相册,失败静默""" try: album_name = self.config_manager.get_group_album_name() + strict_mode = self.config_manager.get_group_album_strict_mode() album_id = None - if album_name and hasattr(adapter, "find_album_id"): - album_id = await adapter.find_album_id(group_id, album_name) + + if hasattr(adapter, "find_album_id"): + if album_name: + album_id = await adapter.find_album_id(group_id, album_name) + if not album_id and strict_mode: + logger.info( + f"群相册严格模式开启:在群 {group_id} 中未找到名为 '{album_name}' 的相册,停止上传。" + ) + return + elif strict_mode: + logger.info( + f"群相册严格模式开启:未设置目标相册名称,停止上传以防止操作群 {group_id} 的默认相册。" + ) + return + await adapter.upload_group_album( group_id, file_path, album_id=album_id, album_name=album_name )