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):
|
async def _delayed_start_scheduler(self):
|
||||||
"""延迟启动调度器,给系统时间初始化"""
|
"""延迟启动调度器,给系统时间初始化"""
|
||||||
try:
|
try:
|
||||||
# 等待30秒让系统完全初始化
|
# 等待10秒让系统完全初始化
|
||||||
await asyncio.sleep(30)
|
await asyncio.sleep(30)
|
||||||
|
|
||||||
# 初始化所有bot实例
|
# 初始化所有bot实例
|
||||||
@@ -174,9 +174,17 @@ class QQGroupDailyAnalysis(Star):
|
|||||||
logger.info(f"当前输出格式配置: {config_manager.get_output_format()}")
|
logger.info(f"当前输出格式配置: {config_manager.get_output_format()}")
|
||||||
|
|
||||||
try:
|
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(
|
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:
|
if not messages:
|
||||||
yield event.plain_result(
|
yield event.plain_result(
|
||||||
|
|||||||
@@ -120,7 +120,14 @@ class BotManager:
|
|||||||
def update_from_event(self, event):
|
def update_from_event(self, event):
|
||||||
"""从事件更新bot实例(用于手动命令)"""
|
"""从事件更新bot实例(用于手动命令)"""
|
||||||
if hasattr(event, "bot") and 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号
|
||||||
bot_qq_id = self._extract_bot_qq_id(event.bot)
|
bot_qq_id = self._extract_bot_qq_id(event.bot)
|
||||||
if bot_qq_id:
|
if bot_qq_id:
|
||||||
|
|||||||
@@ -376,9 +376,12 @@ class AutoScheduler:
|
|||||||
async def _send_image_message(self, group_id: str, image_url: str):
|
async def _send_image_message(self, group_id: str, image_url: str):
|
||||||
"""发送图片消息到群"""
|
"""发送图片消息到群"""
|
||||||
try:
|
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:
|
if not bot_instance:
|
||||||
logger.error(f"群 {group_id} 发送图片失败:缺少bot实例")
|
logger.error(f"群 {group_id} 发送图片失败:缺少bot实例(平台: {platform_id})")
|
||||||
return
|
return
|
||||||
|
|
||||||
# 发送图片消息到群
|
# 发送图片消息到群
|
||||||
@@ -398,9 +401,12 @@ class AutoScheduler:
|
|||||||
async def _send_text_message(self, group_id: str, text_content: str):
|
async def _send_text_message(self, group_id: str, text_content: str):
|
||||||
"""发送文本消息到群"""
|
"""发送文本消息到群"""
|
||||||
try:
|
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:
|
if not bot_instance:
|
||||||
logger.error(f"群 {group_id} 发送文本失败:缺少bot实例")
|
logger.error(f"群 {group_id} 发送文本失败:缺少bot实例(平台: {platform_id})")
|
||||||
return
|
return
|
||||||
|
|
||||||
# 发送文本消息到群
|
# 发送文本消息到群
|
||||||
@@ -415,9 +421,12 @@ class AutoScheduler:
|
|||||||
async def _send_pdf_file(self, group_id: str, pdf_path: str):
|
async def _send_pdf_file(self, group_id: str, pdf_path: str):
|
||||||
"""发送PDF文件到群"""
|
"""发送PDF文件到群"""
|
||||||
try:
|
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:
|
if not bot_instance:
|
||||||
logger.error(f"群 {group_id} 发送PDF失败:缺少bot实例")
|
logger.error(f"群 {group_id} 发送PDF失败:缺少bot实例(平台: {platform_id})")
|
||||||
return
|
return
|
||||||
|
|
||||||
# 发送PDF文件到群
|
# 发送PDF文件到群
|
||||||
|
|||||||
@@ -32,10 +32,10 @@ class MessageAnalyzer:
|
|||||||
return str(bot_instance.user_id)
|
return str(bot_instance.user_id)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
async def set_bot_instance(self, bot_instance):
|
async def set_bot_instance(self, bot_instance, platform_id=None):
|
||||||
"""设置bot实例(保持向后兼容)"""
|
"""设置bot实例(保持向后兼容)"""
|
||||||
if self.bot_manager:
|
if self.bot_manager:
|
||||||
self.bot_manager.set_bot_instance(bot_instance)
|
self.bot_manager.set_bot_instance(bot_instance, platform_id)
|
||||||
else:
|
else:
|
||||||
# 从bot实例提取QQ号并设置为列表
|
# 从bot实例提取QQ号并设置为列表
|
||||||
bot_qq_id = self._extract_bot_qq_id_from_instance(bot_instance)
|
bot_qq_id = self._extract_bot_qq_id_from_instance(bot_instance)
|
||||||
|
|||||||
Reference in New Issue
Block a user