前言
相信很多MJJ和我一样,因为平时没时间关注鸡圈,导致经常错过一些关键的时间节点,比如传家宝的续费,黑五抢购,一些限时的优惠,因此,我开发了这一款MJJ提醒工具
,无需服务器,还是薅我们的赛博活佛——cloudflare
的羊毛,为了避免网站沉寂不工作,我们使用监控工具 cron-job.org Console 进行定时触发。网站demo
灵感来自 woniu336大佬 的已有项目 MJJ订阅追踪,但是大佬的项目提醒和部署在服务器上不适合我,所以自建了一个
正文
下面就开始搭建吧
准备工具
- Cloudflare 账号
- Cloudflare Pages
- Cloudflare D1 数据库
- Telegram Bot Token 和 Chat ID
- 企业微信 Webhook 地址
数据库
在 Cloudflare Workers 中创建 D1 数据库
然后在控制台执行查询命令
CREATE TABLE reminders (
id TEXT PRIMARY KEY,
title TEXT NOT NULL,
content TEXT NOT NULL,
remind_time TEXT NOT NULL,
cycle_type TEXT NOT NULL,
status INTEGER DEFAULT 0,
link TEXT,
cron_job_id INTEGER,
created_at TEXT
);
部署步骤
注册并且获取cron-job.org Console的api key
只能创建一个,但是可以随时修改
- fork项目,1143520/deadline 或者下载源码,git上传
- 在 Cloudflare Pages 中创建新项目
- 连接您的 Git 仓库(GitHub、GitLab 等),选择刚刚fork的项目
- 点击部署
- 在 Pages 项目设置中:
- 绑定 D1 数据库,设置变量为
DB
- 配置环境变量(见环境变量配置部分)
- 绑定 D1 数据库,设置变量为
CRON_SECRET
: 定时任务的访问密钥(按照个人喜好设置)CRONJOB_API_KEY
: cron-job.org 的 API KEYTG_BOT_TOKEN
: Telegram Bot Token(推送到tg机器人)(这个应该都会吧)(必须至少设置一个通知,否则网站无法访问)TG_CHAT_ID
: Telegram Chat IDWECOM_KEY
: 企业微信 Webhook 地址(完整的url,推送到微信企业机器人,可选)(这个也可以网上找教程)BARK_KEY
:bark提醒(可选)其他通知渠道
可以在deadline/functions/api/notify.js at main · 1143520/deadline自行设置 类似 if (env.BARK_KEY) {} 结构清晰
- 重试部署
使用
网站界面
添加任务
注意,提醒时间不能在3min
之内,否则会跳过第一次提醒
可选:
- 单次提醒:只提醒一次
- 每周循环:在指定的每周某一天重复提醒
- 每月循环:在每月的指定日期重复提醒
- 每年循环:在每年的指定日期重复提醒
【如果你还不满意,可以到cron-job.org Console自行编辑,除了单次任务会自动删除,其他的可以循环触发】
注意
单次任务执行完成之后会自动删除任务,下面以周循环为例
点击任务的编辑可以看到下一次执行时间,实际上是循环的,只显示最近5个
提醒消息样式
总结
使用pages
构建,js后端处理,引入外部定时任务cron-job.org Console 定时触发任务,避免轮询造成免费额度的浪费,和保持提醒的可靠性,请勿泄露API KEY!
使用 cron-job.org 的免费计划有以下限制:
- 最多创建 50 个定时任务
- 最短执行间隔为 1 分钟
- 每个任务的超时时间为 30 秒
- 每月可执行 10,000 次
- 每个任务最多可以设置 100 个不同的执行时间点
欢迎点赞给鸡腿哦😚