member_context: split daily weekly monthly digest scheduling
This commit is contained in:
@@ -50,13 +50,32 @@ class MemberContextPlugin(MessagePluginInterface):
|
||||
self.LOG.debug(f"正在初始化 {self.name} 插件...")
|
||||
self.service = MemberContextService(context["db_manager"], self._config)
|
||||
refresh_times = self._config.get("schedule", {}).get("refresh_times", [])
|
||||
if refresh_times and not self._job_registered:
|
||||
@async_job.at_times(refresh_times)
|
||||
async def refresh_member_context_job():
|
||||
if self.service:
|
||||
self.LOG.info("开始刷新成员交互摘要")
|
||||
self.service.refresh_all_chatrooms()
|
||||
self.LOG.info("成员交互摘要刷新完成")
|
||||
weekly_refresh_time = self._config.get("schedule", {}).get("weekly_refresh_time", "")
|
||||
monthly_refresh_time = self._config.get("schedule", {}).get("monthly_refresh_time", "")
|
||||
if not self._job_registered:
|
||||
if refresh_times:
|
||||
@async_job.at_times(refresh_times)
|
||||
async def refresh_member_context_job():
|
||||
if self.service:
|
||||
self.LOG.info("开始刷新成员交互摘要(日任务)")
|
||||
self.service.refresh_all_chatrooms(enable_weekly_digest=False, enable_monthly_digest=False)
|
||||
self.LOG.info("成员交互摘要刷新完成(日任务)")
|
||||
|
||||
if weekly_refresh_time:
|
||||
@async_job.every_week_time(weekday=6, time_str=weekly_refresh_time)
|
||||
async def refresh_member_context_weekly_job():
|
||||
if self.service:
|
||||
self.LOG.info("开始刷新成员交互摘要(周任务)")
|
||||
self.service.refresh_all_chatrooms(enable_weekly_digest=True, enable_monthly_digest=False)
|
||||
self.LOG.info("成员交互摘要刷新完成(周任务)")
|
||||
|
||||
if monthly_refresh_time:
|
||||
@async_job.every_month_last_day_time(monthly_refresh_time)
|
||||
async def refresh_member_context_monthly_job():
|
||||
if self.service:
|
||||
self.LOG.info("开始刷新成员交互摘要(月任务)")
|
||||
self.service.refresh_all_chatrooms(enable_weekly_digest=False, enable_monthly_digest=True)
|
||||
self.LOG.info("成员交互摘要刷新完成(月任务)")
|
||||
self._job_registered = True
|
||||
self.LOG.debug(f"{self.name} 插件初始化完成")
|
||||
return True
|
||||
|
||||
Reference in New Issue
Block a user