From cb999daed2fef7397cdb120c64b3c942c77ed7fc Mon Sep 17 00:00:00 2001 From: tt-P607 <68868379+tt-P607@users.noreply.github.com> Date: Sat, 30 Aug 2025 19:49:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(maizone):=20=E6=96=B0=E5=A2=9E=E6=8C=89?= =?UTF-8?q?=E6=97=B6=E6=AE=B5=E7=A6=81=E7=94=A8=E8=87=AA=E5=8A=A8=E8=AF=B4?= =?UTF-8?q?=E8=AF=B4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将原有的活动黑名单机制替换为更灵活的按小时禁用功能。 现在可以配置一个时间段(例如凌晨2点到6点),在此期间插件将不会根据日程活动自动发送说说,以避免在休息时间造成打扰。 原有的 `activity_blacklist` 配置项已被移除。 --- .../built_in/maizone_refactored/plugin.py | 3 ++- .../services/scheduler_service.py | 21 ++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/plugins/built_in/maizone_refactored/plugin.py b/src/plugins/built_in/maizone_refactored/plugin.py index 6507c1c92..ce722cb7b 100644 --- a/src/plugins/built_in/maizone_refactored/plugin.py +++ b/src/plugins/built_in/maizone_refactored/plugin.py @@ -73,7 +73,8 @@ class MaiZoneRefactoredPlugin(BasePlugin): "enable_schedule": ConfigField(type=bool, default=False, description="是否启用定时发送"), "random_interval_min_minutes": ConfigField(type=int, default=5, description="随机间隔分钟数下限"), "random_interval_max_minutes": ConfigField(type=int, default=15, description="随机间隔分钟数上限"), - "activity_blacklist": ConfigField(type=list, default=["睡觉", "睡眠", "梦乡"], description="不会触发自动说说的活动黑名单"), + "forbidden_hours_start": ConfigField(type=int, default=2, description="禁止发送的开始小时(24小时制)"), + "forbidden_hours_end": ConfigField(type=int, default=6, description="禁止发送的结束小时(24小时制)"), }, "cookie": { "http_fallback_host": ConfigField(type=str, default="172.20.130.55", description="备用Cookie获取服务的主机地址"), diff --git a/src/plugins/built_in/maizone_refactored/services/scheduler_service.py b/src/plugins/built_in/maizone_refactored/services/scheduler_service.py index e6498ab9b..52be51ee7 100644 --- a/src/plugins/built_in/maizone_refactored/services/scheduler_service.py +++ b/src/plugins/built_in/maizone_refactored/services/scheduler_service.py @@ -76,11 +76,22 @@ class SchedulerService: logger.info(f"当前检测到的日程活动: {current_activity}") if current_activity: - # 3. 检查活动是否在黑名单中 - activity_blacklist = self.get_config("schedule.activity_blacklist", ["睡觉", "睡眠"]) - if any(keyword in current_activity for keyword in activity_blacklist): - logger.info(f"活动 '{current_activity}' 包含黑名单关键字,本次跳过。") - self.last_processed_activity = current_activity # 更新状态以防活动切换后立即触发 + # 3. 检查当前时间是否在禁止发送的时间段内 + now = datetime.datetime.now() + forbidden_start = self.get_config("schedule.forbidden_hours_start", 2) + forbidden_end = self.get_config("schedule.forbidden_hours_end", 6) + + is_forbidden_time = False + if forbidden_start < forbidden_end: + # 例如,2点到6点 + is_forbidden_time = forbidden_start <= now.hour < forbidden_end + else: + # 例如,23点到第二天7点 + is_forbidden_time = now.hour >= forbidden_start or now.hour < forbidden_end + + if is_forbidden_time: + logger.info(f"当前时间 {now.hour}点 处于禁止发送时段 ({forbidden_start}-{forbidden_end}),本次跳过。") + self.last_processed_activity = current_activity # 4. 检查活动是否是新的活动 elif current_activity != self.last_processed_activity: