feat: 新增群相册上传严格模式

- 在 _conf_schema.json 中增加 group_album_strict_mode 开关
 - 修改 ReportDispatcher,在严格模式下禁止回退到默认相册
 - 优化 OneBotAdapter 的日志输出,使其符合决策逻辑
This commit is contained in:
SXP-Simon
2026-03-12 15:16:43 +08:00
parent b4abee55d4
commit 1e3d3b922c
4 changed files with 32 additions and 3 deletions
+6
View File
@@ -349,6 +349,12 @@
"description": "目标群相册名称",
"default": "",
"hint": "指定上传到哪个群相册(请确保已经存在这个名称的相册)。留空则上传到群默认相册。如果指定的相册不存在,将回退到默认相册"
},
"group_album_strict_mode": {
"type": "bool",
"description": "群相册上传严格模式",
"default": true,
"hint": "当启用该开关且设置了目标群相册名称时:如果插件在目标群组中找不到同名的相册,将放弃上传。关闭该开关时,找不到目标相册将回退到群组默认的第一个相册。"
}
}
},
@@ -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:
@@ -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
+16 -2
View File
@@ -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
)