fix(get_astrbot_data_path): fallback 到 get_astrbot_data_path 方法

This commit is contained in:
SXP-Simon
2026-04-02 15:25:07 +08:00
parent e503e7ad63
commit 5e2da8c852
4 changed files with 50 additions and 13 deletions
+1 -1
View File
@@ -376,7 +376,7 @@
"type": "string",
"description": "报告储存目录",
"default": "",
"hint": "HTML报告文件的保存目录,用于存储生成的 HTML 文件和原始 JSON 数据。留空则自动使用插件数据目录下的 self_hosted_html_reports 目录。"
"hint": "HTML报告文件的保存目录,用于存储生成的 HTML 文件和原始 JSON 数据。留空则自动使用插件数据目录astrbot_path/data/plugin_data/astrbot_plugin_qq_group_daily_analysis/下的 self_hosted_html_reports 目录。"
},
"html_filename_format": {
"type": "string",
+16 -3
View File
@@ -80,15 +80,28 @@ class GroupDailyAnalysis(Star):
super().__init__(context)
self.config = config
from pathlib import Path
from astrbot.core.utils.astrbot_path import get_astrbot_data_path
# 1. 基础设施层
self.config_manager = ConfigManager(config)
self.bot_manager = BotManager(self.config_manager)
self.bot_manager.set_context(context)
self.bot_manager.set_plugin_instance(self)
self.history_manager = HistoryManager(self)
self.report_generator = ReportGenerator(
self.config_manager, StarTools.get_data_dir()
)
try:
plugin_data_dir = StarTools.get_data_dir()
except Exception:
# 回退逻辑:手动构造满足规范的路径
plugin_data_dir = (
Path(get_astrbot_data_path())
/ "plugin_data"
/ "astrbot_plugin_qq_group_daily_analysis"
)
self.report_generator = ReportGenerator(self.config_manager, plugin_data_dir)
# Telegram 注册表 (持久层)
self.telegram_group_registry = TelegramGroupRegistry(self)
@@ -279,9 +279,21 @@ class BaseAnalyzer(ABC, Generic[TDataObject]):
session_id: 会话ID
"""
try:
from pathlib import Path
from astrbot.api.star import StarTools
from astrbot.core.utils.astrbot_path import get_astrbot_data_path
try:
data_path = StarTools.get_data_dir() / "debug_data"
except Exception:
data_path = (
Path(get_astrbot_data_path())
/ "plugin_data"
/ "astrbot_plugin_qq_group_daily_analysis"
/ "debug_data"
)
data_path = StarTools.get_data_dir() / "debug_data"
data_path.mkdir(parents=True, exist_ok=True)
file_name = f"{session_id}_{self.get_data_type()}.txt"
+20 -8
View File
@@ -224,17 +224,23 @@ class ConfigManager:
def get_pdf_output_dir(self) -> str:
"""获取PDF输出目录"""
from pathlib import Path
from astrbot.core.utils.astrbot_path import get_astrbot_data_path
try:
default_path = StarTools.get_data_dir() / "reports"
val = self._get_group("pdf").get("pdf_output_dir")
return val if val else str(default_path)
except Exception:
val = self._get_group("pdf").get("pdf_output_dir")
return (
val
if val
else "data/plugins/astrbot_plugin_qq_group_daily_analysis/reports"
fallback_path = (
Path(get_astrbot_data_path())
/ "plugin_data"
/ "astrbot_plugin_qq_group_daily_analysis"
/ "reports"
)
return val if val else str(fallback_path)
def get_bot_self_ids(self) -> list:
"""获取机器人自身的 ID 列表 (兼容 bot_qq_ids)"""
@@ -252,17 +258,23 @@ class ConfigManager:
def get_html_output_dir(self) -> str:
"""获取HTML输出目录"""
from pathlib import Path
from astrbot.core.utils.astrbot_path import get_astrbot_data_path
try:
default_path = StarTools.get_data_dir() / "self_hosted_html_reports"
val = self._get_group("html").get("html_output_dir")
return val if val else str(default_path)
except Exception:
val = self._get_group("html").get("html_output_dir")
return (
val
if val
else "data/plugins/astrbot_plugin_qq_group_daily_analysis/self_hosted_html_reports"
fallback_path = (
Path(get_astrbot_data_path())
/ "plugin_data"
/ "astrbot_plugin_qq_group_daily_analysis"
/ "self_hosted_html_reports"
)
return val if val else str(fallback_path)
def get_html_base_url(self) -> str:
"""获取HTML外链Base URL"""