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"):
|
if enable_album and hasattr(adapter, "upload_group_album"):
|
||||||
try:
|
try:
|
||||||
album_name = self.config_manager.get_group_album_name()
|
album_name = self.config_manager.get_group_album_name()
|
||||||
|
strict_mode = self.config_manager.get_group_album_strict_mode()
|
||||||
album_id = None
|
album_id = None
|
||||||
if album_name and hasattr(adapter, "find_album_id"):
|
if hasattr(adapter, "find_album_id"):
|
||||||
|
if album_name:
|
||||||
album_id = await adapter.find_album_id(group_id, album_name) # type: ignore[attr-defined]
|
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]
|
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:
|
except Exception as e:
|
||||||
logger.warning(f"群相册上传失败 (群 {group_id}): {e}")
|
logger.warning(f"群相册上传失败 (群 {group_id}): {e}")
|
||||||
|
|||||||
@@ -434,8 +434,10 @@ class ConfigManager:
|
|||||||
return self._get_group("qq_group_upload").get("group_album_name", "")
|
return self._get_group("qq_group_upload").get("group_album_name", "")
|
||||||
|
|
||||||
def get_group_album_strict_mode(self) -> bool:
|
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):
|
def set_group_album_strict_mode(self, enabled: bool):
|
||||||
"""设置群相册上传严格模式"""
|
"""设置群相册上传严格模式"""
|
||||||
|
|||||||
@@ -1134,6 +1134,7 @@ class OneBotAdapter(PlatformAdapter):
|
|||||||
image_path: str,
|
image_path: str,
|
||||||
album_id: str | None = None,
|
album_id: str | None = None,
|
||||||
album_name: str | None = None,
|
album_name: str | None = None,
|
||||||
|
strict_mode: bool = False,
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""
|
"""
|
||||||
上传图片到群相册(NapCat 扩展 API)。
|
上传图片到群相册(NapCat 扩展 API)。
|
||||||
@@ -1146,11 +1147,19 @@ class OneBotAdapter(PlatformAdapter):
|
|||||||
image_path: 本地图片文件的绝对路径
|
image_path: 本地图片文件的绝对路径
|
||||||
album_id: 目标相册 ID
|
album_id: 目标相册 ID
|
||||||
album_name: 目标相册名称(部分 API 需要)
|
album_name: 目标相册名称(部分 API 需要)
|
||||||
|
strict_mode: 严格模式。开启后,当指定了 album_name 但找不到对应相册时将直接终止上传
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: 上传是否成功
|
bool: 上传是否成功
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
|
# 严格模式:指定了相册名但未解析到 album_id 时,禁止回退默认相册
|
||||||
|
if strict_mode and album_name and not album_id:
|
||||||
|
logger.info(
|
||||||
|
f"群相册严格模式开启:未找到目标相册 '{album_name}' (群 {group_id}),停止上传。"
|
||||||
|
)
|
||||||
|
return False
|
||||||
|
|
||||||
# 如果没有 album_id,尝试获取该群的第一个相册作为默认目标
|
# 如果没有 album_id,尝试获取该群的第一个相册作为默认目标
|
||||||
if not album_id:
|
if not album_id:
|
||||||
albums = await self.get_group_album_list(group_id)
|
albums = await self.get_group_album_list(group_id)
|
||||||
|
|||||||
@@ -253,7 +253,11 @@ class ReportDispatcher:
|
|||||||
return
|
return
|
||||||
|
|
||||||
await adapter.upload_group_album(
|
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:
|
except Exception as e:
|
||||||
logger.warning(f"群相册上传失败 (群 {group_id}): {e}")
|
logger.warning(f"群相册上传失败 (群 {group_id}): {e}")
|
||||||
|
|||||||
Reference in New Issue
Block a user