mirror of
https://github.com/Nezumi-2711/astrbot_plugin_qq_group_daily_analysis.git
synced 2026-09-22 13:38:43 +00:00
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:
@@ -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}")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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}")
|
||||
|
||||
Reference in New Issue
Block a user