跨时区动态定时任务
(伸了个懒腰,看了眼时钟)滴答滴答……无论主人身处哪个时区,晨曦的第一缕阳光还是深夜的星空,我都在按时守候着哦~
Eridanus 拥有一套极其强大的定时任务引擎。它不仅包含系统级预设的内置广播任务(早安天气、晚安问候、Bangumi 新番推送、Epic 喜加一、摸鱼日历等),更开放了 Function Calling 级动态任务注册机制,允许用户或 AI 自主添加、撤销与查询多周期、多时区的专属定时提醒。
源码入口与核心配置
- 代码入口:
run/scheduled_tasks/scheduledTasks.py(系统内置任务与群订阅控制)run/scheduled_tasks/schedule_tool.py(Function Calling 动态定时引擎)
- 配置文件路径:
run/scheduled_tasks/config.yaml
配置片段展示了丰富且细致的内置任务体系:
yaml
scheduledTasks: # 系统内置定时任务配置
早安问候: # 私聊晨间推送
enable: true
time: 8/3 # 推送时间格式:时/分(08:03)
trustThreshold: 9 # 权限等级门槛,低于此值的用户不会收到推送
onlyTrustUser: true # 仅向受信任用户私聊推送
晚安问候: # 私聊晚安提示
enable: true
text: "晚安!" # 若开启 aiReplyCore 则会自动转化为生动对话
time: 22/31
trustThreshold: 9
onlyTrustUser: true
bangumi: # 番剧动态推送
enable: true
text: "晚上好,这里是今天的bangumi推送"
time: 19/16
摸鱼人日历: # 摸鱼日历推送
enable: true
text: "真没用啊,又在摸鱼了吧,杂鱼❤"
time: 17/30
epic喜加一: # Epic 周免游戏提醒
enable: true
time: 16/40
jm每日推送: # JM 今日热门排行
enable: true
time: 16/58
text: "📚 该打搅了少爷"源码里真正支持的群管理与测试指令
群订阅管理(在群聊中发送)
| 指令格式 | 示例 | 作用说明 |
|---|---|---|
/cron add <任务名称> | /cron add 摸鱼人日历 | 将当前群加入指定定时任务的广播推送名单 |
/cron remove <任务名称> | /cron remove 摸鱼人日历 | 将当前群从指定定时任务的广播名单中移除 |
Master 手动即时测试
Master 发送对应指令可立即验证卡片渲染与推送逻辑:
测试定时任务测试晚安问候今日天文单向历
动态任务工具声明(Function Calling)
在 run/scheduled_tasks/__init__.py 中,框架为 AI 核心注册了动态调度工具:
call_create_schedule_task:创建单次(once)、每日(daily)、工作日(workday)、周末(weekend)或每周(weekly)的定时任务;call_cancel_schedule_task:根据任务 ID 取消执行中的定时提醒;call_list_schedule_tasks:列出当前用户或群的所有活动定时任务。
因此,当你对支持 Function Calling 的 AI 对话核心说:“明天早上九点提醒我开会”时,AI 就会直接调用该工具将任务存入数据库!
如果你想做什么,应该改哪里?
- 群里想要每天下午五点半自动发摸鱼人日历:
- 打开
run/scheduled_tasks/config.yaml确认摸鱼人日历.enable: true,且time: 17/30; - 在目标群内发送:
/cron add 摸鱼人日历。
- 打开
- 不想让 Bot 私聊向普通人推送早晚安:
- 保持
onlyTrustUser: true,并将trustThreshold调高(例如10),只有达到相应权限等级的好友才会收到问候。
- 保持
- 想修改某项推送的具体时间:
- 直接修改对应任务下的
time字段,格式为小时/分钟(例如12/00表示中午 12 点整)。
- 直接修改对应任务下的