解决bug

This commit is contained in:
liuwei
2025-06-10 17:59:15 +08:00
parent fe11839642
commit b2ed9646f5

View File

@@ -51,6 +51,7 @@ class MessagePushTask(MessagePluginInterface):
super().__init__()
self.feature = self.register_feature()
self.db = None
self._task_execution_records = {} # 用于记录任务执行状态
def initialize(self, context: Dict[str, Any]) -> bool:
"""初始化插件"""
@@ -121,6 +122,11 @@ class MessagePushTask(MessagePluginInterface):
if roomid and gbm.get_group_permission(roomid, self.feature) == PermissionStatus.DISABLED:
return False, "没有权限"
def _get_execution_key(self, task_id: str, hour: int, minute: int) -> str:
"""生成任务执行记录的唯一键"""
now = datetime.now()
return f"{task_id}_{now.date()}_{hour}_{minute}"
async def process_scheduled_tasks(self):
"""处理定时任务"""
try:
@@ -162,6 +168,16 @@ class MessagePushTask(MessagePluginInterface):
time_diff = abs((now - target_time).total_seconds())
if time_diff > 5: # 允许5秒的误差
continue
# 检查是否已经在这个时间点执行过
execution_key = self._get_execution_key(task['task_id'], hour, minute)
if execution_key in self._task_execution_records:
self.LOG.info(f"任务 {task['task_id']} 今天已经执行过,跳过")
continue
# 记录执行状态
self._task_execution_records[execution_key] = now
except (ValueError, AttributeError) as e:
self.LOG.error(f"无效的执行时间格式: {recurring_time}, 错误: {e}")
continue