mirror of
https://github.com/Nezumi-2711/astrbot_plugin_qq_group_daily_analysis.git
synced 2026-09-22 13:38:43 +00:00
fix(is_plugin_enabled): 检查该平台是否包含该插件的配置文件 plugin_set,通过 AstrBot 配置文件来判断账号启用插件
解决关联 issue `[Bug] 定时分析会直接检测某个群所有支持的平台,而不会检查该平台是否包含该插件的配置文件 #72`
This commit is contained in:
+29
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user