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/reports/__pycache__/templates.cpython-312.pyc
|
||||||
src/visualization/__pycache__/__init__.cpython-312.pyc
|
src/visualization/__pycache__/__init__.cpython-312.pyc
|
||||||
src/visualization/__pycache__/activity_charts.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):
|
def __init__(self, config_manager):
|
||||||
self.config_manager = config_manager
|
self.config_manager = config_manager
|
||||||
self._bot_instances = {} # 改为字典:{platform_id: bot_instance}
|
self._bot_instances = {} # 改为字典:{platform_id: bot_instance}
|
||||||
|
self._platforms = {} # 存储平台对象以访问配置
|
||||||
self._bot_qq_ids = [] # 支持多个QQ号
|
self._bot_qq_ids = [] # 支持多个QQ号
|
||||||
self._context = None
|
self._context = None
|
||||||
self._is_initialized = False
|
self._is_initialized = False
|
||||||
@@ -110,6 +111,7 @@ class BotManager:
|
|||||||
):
|
):
|
||||||
platform_id = platform.metadata.id
|
platform_id = platform.metadata.id
|
||||||
self.set_bot_instance(bot_client, platform_id)
|
self.set_bot_instance(bot_client, platform_id)
|
||||||
|
self._platforms[platform_id] = platform
|
||||||
discovered[platform_id] = bot_client
|
discovered[platform_id] = bot_client
|
||||||
|
|
||||||
return discovered
|
return discovered
|
||||||
@@ -193,3 +195,24 @@ class BotManager:
|
|||||||
sender_id_str = str(sender_id)
|
sender_id_str = str(sender_id)
|
||||||
# 检查是否在QQ号列表中
|
# 检查是否在QQ号列表中
|
||||||
return sender_id_str in self._bot_qq_ids
|
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 asyncio
|
||||||
|
import base64
|
||||||
import weakref
|
import weakref
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
import aiohttp
|
import aiohttp
|
||||||
import base64
|
|
||||||
|
|
||||||
|
|
||||||
from astrbot.api import logger
|
from astrbot.api import logger
|
||||||
@@ -314,6 +315,13 @@ class AutoScheduler:
|
|||||||
)
|
)
|
||||||
|
|
||||||
for test_platform_id, test_bot_instance in available_platforms:
|
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:
|
try:
|
||||||
logger.info(
|
logger.info(
|
||||||
f"尝试使用平台 {test_platform_id} 获取群 {group_id} 的消息..."
|
f"尝试使用平台 {test_platform_id} 获取群 {group_id} 的消息..."
|
||||||
@@ -428,6 +436,13 @@ class AutoScheduler:
|
|||||||
return []
|
return []
|
||||||
|
|
||||||
for platform_id, bot_instance in self.bot_manager._bot_instances.items():
|
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:
|
try:
|
||||||
# 尝试使用 call_action 获取群列表
|
# 尝试使用 call_action 获取群列表
|
||||||
call_action_func = None
|
call_action_func = None
|
||||||
|
|||||||
Reference in New Issue
Block a user