feat: integrate with AstrBot lifecycle events and update config schema

This commit is contained in:
SXP-Simon
2026-02-07 23:49:51 +08:00
parent b551abd2db
commit 58c27f9136
2 changed files with 23 additions and 22 deletions
-6
View File
@@ -118,12 +118,6 @@
"default": 5,
"hint": "分析报告中显示的最大金句数量,依赖于 LLM 输出的格式化信息质量,模型越好结果越好,可能出现数量不匹配。"
},
"llm_timeout": {
"type": "int",
"description": "LLM 请求超时时间(秒)",
"default": 100,
"hint": "LLM 单次请求的超时时间,单位秒。可根据模型响应速度适当调整,增大可减少超时失败,但会占用更多等待时间,思考模型可以根据情况进行调大。"
},
"llm_retries": {
"type": "int",
"description": "LLM 请求重试次数",
+23 -16
View File
@@ -53,18 +53,17 @@ class QQGroupDailyAnalysis(Star):
self.html_render, # 传入html_render函数
)
# 延迟启动自动调度器,给系统时间初始化
if self.config_manager.get_enable_auto_analysis():
asyncio.create_task(self._delayed_start_scheduler())
# 注册日志过滤器
from .src.utils.trace_context import TraceLogFilter
logger.addFilter(TraceLogFilter())
logger.info("QQ群日常分析插件已初始化(模块化版本)")
async def _delayed_start_scheduler(self):
"""延迟启动调度器,给系统时间初始化"""
@filter.on_platform_loaded()
async def on_platform_loaded(self, event):
"""平台加载完成后初始化"""
try:
# 等待30秒让系统完全初始化
await asyncio.sleep(30)
# 初始化所有bot实例
discovered = await self.bot_manager.initialize_from_config()
if discovered:
@@ -76,7 +75,7 @@ class QQGroupDailyAnalysis(Star):
)
# 启动调度器
await self.auto_scheduler.start_scheduler()
self.auto_scheduler.schedule_jobs(self.context)
else:
logger.warning("Bot管理器初始化失败,未发现任何适配器")
status = self.bot_manager.get_status_info()
@@ -86,7 +85,7 @@ class QQGroupDailyAnalysis(Star):
await self.retry_manager.start()
except Exception as e:
logger.debug(f"延迟启动调度器失败,可能由于短时间内多次更新插件配置: {e}")
logger.error(f"平台加载事件处理失败: {e}", exc_info=True)
async def terminate(self):
"""插件被卸载/停用时调用,清理资源"""
@@ -96,7 +95,7 @@ class QQGroupDailyAnalysis(Star):
# 停止自动调度器
if self.auto_scheduler:
logger.info("正在停止自动调度器...")
await self.auto_scheduler.stop_scheduler()
self.auto_scheduler.unschedule_jobs(self.context)
logger.info("自动调度器已停止")
if self.retry_manager:
@@ -577,8 +576,10 @@ class QQGroupDailyAnalysis(Star):
glist.append(group_id)
self.config_manager.set_group_list(glist)
yield event.plain_result("✅ 已将当前群加入白名单")
self.config_manager.set_group_list(glist)
yield event.plain_result("✅ 已将当前群加入白名单")
# 重新启动定时任务
await self.auto_scheduler.restart_scheduler()
self.auto_scheduler.schedule_jobs(self.context)
else:
yield event.plain_result("️ 当前群已在白名单中")
elif mode == "blacklist":
@@ -587,8 +588,10 @@ class QQGroupDailyAnalysis(Star):
glist.remove(group_id)
self.config_manager.set_group_list(glist)
yield event.plain_result("✅ 已将当前群从黑名单移除")
self.config_manager.set_group_list(glist)
yield event.plain_result("✅ 已将当前群从黑名单移除")
# 重新启动定时任务
await self.auto_scheduler.restart_scheduler()
self.auto_scheduler.schedule_jobs(self.context)
else:
yield event.plain_result("️ 当前群不在黑名单中")
else:
@@ -602,8 +605,10 @@ class QQGroupDailyAnalysis(Star):
glist.remove(group_id)
self.config_manager.set_group_list(glist)
yield event.plain_result("✅ 已将当前群从白名单移除")
self.config_manager.set_group_list(glist)
yield event.plain_result("✅ 已将当前群从白名单移除")
# 重新启动定时任务
await self.auto_scheduler.restart_scheduler()
self.auto_scheduler.schedule_jobs(self.context)
else:
yield event.plain_result("️ 当前群不在白名单中")
elif mode == "blacklist":
@@ -612,8 +617,10 @@ class QQGroupDailyAnalysis(Star):
glist.append(group_id)
self.config_manager.set_group_list(glist)
yield event.plain_result("✅ 已将当前群加入黑名单")
self.config_manager.set_group_list(glist)
yield event.plain_result("✅ 已将当前群加入黑名单")
# 重新启动定时任务
await self.auto_scheduler.restart_scheduler()
self.auto_scheduler.schedule_jobs(self.context)
else:
yield event.plain_result("️ 当前群已在黑名单中")
else:
@@ -623,7 +630,7 @@ class QQGroupDailyAnalysis(Star):
elif action == "reload":
# 重新启动定时任务
await self.auto_scheduler.restart_scheduler()
self.auto_scheduler.schedule_jobs(self.context)
yield event.plain_result("✅ 已重新加载配置并重启定时任务")
elif action == "test":