mirror of
https://github.com/Nezumi-2711/astrbot_plugin_qq_group_daily_analysis.git
synced 2026-09-22 13:38:43 +00:00
fix(多适配器支持): 处理 Bot 实例与平台 ID
This commit is contained in:
@@ -70,7 +70,7 @@ class QQGroupDailyAnalysis(Star):
|
||||
async def _delayed_start_scheduler(self):
|
||||
"""延迟启动调度器,给系统时间初始化"""
|
||||
try:
|
||||
# 等待30秒让系统完全初始化
|
||||
# 等待10秒让系统完全初始化
|
||||
await asyncio.sleep(30)
|
||||
|
||||
# 初始化所有bot实例
|
||||
@@ -174,9 +174,17 @@ class QQGroupDailyAnalysis(Star):
|
||||
logger.info(f"当前输出格式配置: {config_manager.get_output_format()}")
|
||||
|
||||
try:
|
||||
# 获取该群对应的平台ID和bot实例
|
||||
platform_id = auto_scheduler._get_platform_id_for_group(group_id)
|
||||
bot_instance = bot_manager.get_bot_instance(platform_id)
|
||||
|
||||
if not bot_instance:
|
||||
yield event.plain_result(f"❌ 未找到群 {group_id} 对应的bot实例(平台: {platform_id})")
|
||||
return
|
||||
|
||||
# 获取群聊消息
|
||||
messages = await message_analyzer.message_handler.fetch_group_messages(
|
||||
bot_manager.get_bot_instance(), group_id, analysis_days
|
||||
bot_instance, group_id, analysis_days, platform_id
|
||||
)
|
||||
if not messages:
|
||||
yield event.plain_result(
|
||||
|
||||
@@ -120,7 +120,14 @@ class BotManager:
|
||||
def update_from_event(self, event):
|
||||
"""从事件更新bot实例(用于手动命令)"""
|
||||
if hasattr(event, "bot") and event.bot:
|
||||
self.set_bot_instance(event.bot)
|
||||
# 从事件中获取平台ID
|
||||
platform_id = None
|
||||
if hasattr(event, "platform") and event.platform:
|
||||
platform_id = event.platform
|
||||
elif hasattr(event, "metadata") and hasattr(event.metadata, "platform"):
|
||||
platform_id = event.metadata.platform
|
||||
|
||||
self.set_bot_instance(event.bot, platform_id)
|
||||
# 每次都尝试从bot实例提取QQ号
|
||||
bot_qq_id = self._extract_bot_qq_id(event.bot)
|
||||
if bot_qq_id:
|
||||
|
||||
@@ -376,9 +376,12 @@ class AutoScheduler:
|
||||
async def _send_image_message(self, group_id: str, image_url: str):
|
||||
"""发送图片消息到群"""
|
||||
try:
|
||||
bot_instance = self.bot_manager.get_bot_instance()
|
||||
# 获取该群对应的平台ID和bot实例
|
||||
platform_id = self._get_platform_id_for_group(group_id)
|
||||
bot_instance = self.bot_manager.get_bot_instance(platform_id)
|
||||
|
||||
if not bot_instance:
|
||||
logger.error(f"群 {group_id} 发送图片失败:缺少bot实例")
|
||||
logger.error(f"群 {group_id} 发送图片失败:缺少bot实例(平台: {platform_id})")
|
||||
return
|
||||
|
||||
# 发送图片消息到群
|
||||
@@ -398,9 +401,12 @@ class AutoScheduler:
|
||||
async def _send_text_message(self, group_id: str, text_content: str):
|
||||
"""发送文本消息到群"""
|
||||
try:
|
||||
bot_instance = self.bot_manager.get_bot_instance()
|
||||
# 获取该群对应的平台ID和bot实例
|
||||
platform_id = self._get_platform_id_for_group(group_id)
|
||||
bot_instance = self.bot_manager.get_bot_instance(platform_id)
|
||||
|
||||
if not bot_instance:
|
||||
logger.error(f"群 {group_id} 发送文本失败:缺少bot实例")
|
||||
logger.error(f"群 {group_id} 发送文本失败:缺少bot实例(平台: {platform_id})")
|
||||
return
|
||||
|
||||
# 发送文本消息到群
|
||||
@@ -415,9 +421,12 @@ class AutoScheduler:
|
||||
async def _send_pdf_file(self, group_id: str, pdf_path: str):
|
||||
"""发送PDF文件到群"""
|
||||
try:
|
||||
bot_instance = self.bot_manager.get_bot_instance()
|
||||
# 获取该群对应的平台ID和bot实例
|
||||
platform_id = self._get_platform_id_for_group(group_id)
|
||||
bot_instance = self.bot_manager.get_bot_instance(platform_id)
|
||||
|
||||
if not bot_instance:
|
||||
logger.error(f"群 {group_id} 发送PDF失败:缺少bot实例")
|
||||
logger.error(f"群 {group_id} 发送PDF失败:缺少bot实例(平台: {platform_id})")
|
||||
return
|
||||
|
||||
# 发送PDF文件到群
|
||||
|
||||
@@ -32,10 +32,10 @@ class MessageAnalyzer:
|
||||
return str(bot_instance.user_id)
|
||||
return None
|
||||
|
||||
async def set_bot_instance(self, bot_instance):
|
||||
async def set_bot_instance(self, bot_instance, platform_id=None):
|
||||
"""设置bot实例(保持向后兼容)"""
|
||||
if self.bot_manager:
|
||||
self.bot_manager.set_bot_instance(bot_instance)
|
||||
self.bot_manager.set_bot_instance(bot_instance, platform_id)
|
||||
else:
|
||||
# 从bot实例提取QQ号并设置为列表
|
||||
bot_qq_id = self._extract_bot_qq_id_from_instance(bot_instance)
|
||||
|
||||
Reference in New Issue
Block a user