diff --git a/.gitignore b/.gitignore index f4f24d4..5803258 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,32 @@ src/reports/__pycache__/generators.cpython-312.pyc src/reports/__pycache__/templates.cpython-312.pyc src/visualization/__pycache__/__init__.cpython-312.pyc src/visualization/__pycache__/activity_charts.cpython-312.pyc +__pycache__/main.cpython-311.pyc +src/analysis/__pycache__/__init__.cpython-311.pyc +src/analysis/__pycache__/llm_analyzer.cpython-311.pyc +src/analysis/__pycache__/statistics.cpython-311.pyc +src/analysis/analyzers/__pycache__/__init__.cpython-311.pyc +src/analysis/analyzers/__pycache__/base_analyzer.cpython-311.pyc +src/analysis/analyzers/__pycache__/golden_quote_analyzer.cpython-311.pyc +src/analysis/analyzers/__pycache__/topic_analyzer.cpython-311.pyc +src/analysis/analyzers/__pycache__/user_title_analyzer.cpython-311.pyc +src/analysis/utils/__pycache__/__init__.cpython-311.pyc +src/analysis/utils/__pycache__/info_utils.cpython-311.pyc +src/analysis/utils/__pycache__/json_utils.cpython-311.pyc +src/analysis/utils/__pycache__/llm_utils.cpython-311.pyc +src/core/__pycache__/__init__.cpython-311.pyc +src/core/__pycache__/bot_manager.cpython-311.pyc +src/core/__pycache__/config.cpython-311.pyc +src/core/__pycache__/message_handler.cpython-311.pyc +src/models/__pycache__/__init__.cpython-311.pyc +src/models/__pycache__/data_models.cpython-311.pyc +src/reports/__pycache__/__init__.cpython-311.pyc +src/reports/__pycache__/generators.cpython-311.pyc +src/reports/__pycache__/templates.cpython-311.pyc +src/scheduler/__pycache__/__init__.cpython-311.pyc +src/scheduler/__pycache__/auto_scheduler.cpython-311.pyc +src/utils/__pycache__/__init__.cpython-311.pyc +src/utils/__pycache__/helpers.cpython-311.pyc +src/utils/__pycache__/pdf_utils.cpython-311.pyc +src/visualization/__pycache__/__init__.cpython-311.pyc +src/visualization/__pycache__/activity_charts.cpython-311.pyc diff --git a/src/core/bot_manager.py b/src/core/bot_manager.py index a82505a..9098a5d 100644 --- a/src/core/bot_manager.py +++ b/src/core/bot_manager.py @@ -14,6 +14,7 @@ class BotManager: def __init__(self, config_manager): self.config_manager = config_manager self._bot_instances = {} # 改为字典:{platform_id: bot_instance} + self._platforms = {} # 存储平台对象以访问配置 self._bot_qq_ids = [] # 支持多个QQ号 self._context = None self._is_initialized = False @@ -110,6 +111,7 @@ class BotManager: ): platform_id = platform.metadata.id self.set_bot_instance(bot_client, platform_id) + self._platforms[platform_id] = platform discovered[platform_id] = bot_client return discovered @@ -193,3 +195,24 @@ class BotManager: sender_id_str = str(sender_id) # 检查是否在QQ号列表中 return sender_id_str in self._bot_qq_ids + + def is_plugin_enabled(self, platform_id: str, plugin_name: str) -> bool: + """检查指定平台是否启用了该插件""" + if platform_id not in self._platforms: + # 如果找不到平台对象(例如是手动添加的),默认认为启用 + # 或者可以返回 True,因为无法进行否定检查 + return True + + platform = self._platforms[platform_id] + if not hasattr(platform, "config") or not isinstance(platform.config, dict): + return True + + plugin_set = platform.config.get("plugin_set", ["*"]) + + if plugin_set is None: + return False # 如果明确为 None, 视为都不启用? 或者默认? Default is ["*"] usually. + + if "*" in plugin_set: + return True + + return plugin_name in plugin_set diff --git a/src/scheduler/auto_scheduler.py b/src/scheduler/auto_scheduler.py index 5d8ca68..91b994b 100644 --- a/src/scheduler/auto_scheduler.py +++ b/src/scheduler/auto_scheduler.py @@ -4,10 +4,11 @@ """ import asyncio +import base64 import weakref from datetime import datetime, timedelta + import aiohttp -import base64 from astrbot.api import logger @@ -314,6 +315,13 @@ class AutoScheduler: ) for test_platform_id, test_bot_instance in available_platforms: + # 检查该平台是否启用了此插件 + if not self.bot_manager.is_plugin_enabled( + test_platform_id, "astrbot_plugin_qq_group_daily_analysis" + ): + logger.debug(f"平台 {test_platform_id} 未启用此插件,跳过") + continue + try: logger.info( f"尝试使用平台 {test_platform_id} 获取群 {group_id} 的消息..." @@ -428,6 +436,13 @@ class AutoScheduler: return [] for platform_id, bot_instance in self.bot_manager._bot_instances.items(): + # 检查该平台是否启用了此插件 + if not self.bot_manager.is_plugin_enabled( + platform_id, "astrbot_plugin_qq_group_daily_analysis" + ): + logger.debug(f"平台 {platform_id} 未启用此插件,跳过获取群列表") + continue + try: # 尝试使用 call_action 获取群列表 call_action_func = None