fix: 群相册严格模式修复 (#111)

* fix: respect strict mode for qq group album upload(#100)

* fix: align album strict-mode default and bool parsing

* refactor: simplify strict mode config getter

* fix: enforce album strict mode in main upload path

* fix(pre-commit)
This commit is contained in:
Helian Nuits
2026-03-15 23:21:54 +08:00
committed by GitHub
parent c2a3289451
commit 5876613deb
4 changed files with 37 additions and 6 deletions
+19 -3
View File
@@ -417,11 +417,27 @@ class GroupDailyAnalysis(Star):
if enable_album and hasattr(adapter, "upload_group_album"):
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) # type: ignore[attr-defined]
if hasattr(adapter, "find_album_id"):
if album_name:
album_id = await adapter.find_album_id(group_id, album_name) # type: ignore[attr-defined]
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( # type: ignore[attr-defined]
group_id, image_file, album_id=album_id, album_name=album_name
group_id,
image_file,
album_id=album_id,
album_name=album_name,
strict_mode=strict_mode,
)
except Exception as e:
logger.warning(f"群相册上传失败 (群 {group_id}): {e}")
+4 -2
View File
@@ -434,8 +434,10 @@ 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)
"""获取群相册上传严格模式开关。"""
return bool(
self._get_group("qq_group_upload").get("group_album_strict_mode", True)
)
def set_group_album_strict_mode(self, enabled: bool):
"""设置群相册上传严格模式"""
@@ -1134,6 +1134,7 @@ class OneBotAdapter(PlatformAdapter):
image_path: str,
album_id: str | None = None,
album_name: str | None = None,
strict_mode: bool = False,
) -> bool:
"""
上传图片到群相册(NapCat 扩展 API)。
@@ -1146,11 +1147,19 @@ class OneBotAdapter(PlatformAdapter):
image_path: 本地图片文件的绝对路径
album_id: 目标相册 ID
album_name: 目标相册名称(部分 API 需要)
strict_mode: 严格模式。开启后,当指定了 album_name 但找不到对应相册时将直接终止上传
Returns:
bool: 上传是否成功
"""
try:
# 严格模式:指定了相册名但未解析到 album_id 时,禁止回退默认相册
if strict_mode and album_name and not album_id:
logger.info(
f"群相册严格模式开启:未找到目标相册 '{album_name}' (群 {group_id}),停止上传。"
)
return False
# 如果没有 album_id,尝试获取该群的第一个相册作为默认目标
if not album_id:
albums = await self.get_group_album_list(group_id)
+5 -1
View File
@@ -253,7 +253,11 @@ class ReportDispatcher:
return
await adapter.upload_group_album(
group_id, file_path, album_id=album_id, album_name=album_name
group_id,
file_path,
album_id=album_id,
album_name=album_name,
strict_mode=strict_mode,
)
except Exception as e:
logger.warning(f"群相册上传失败 (群 {group_id}): {e}")