解决bug
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user