MJJ提醒工具,万物皆可提醒,妈妈再也不用担心我错过黑五和续费了

博客地址

[网站demo]

放个图在这吧

前言

相信很多MJJ和我一样,因为平时没时间关注鸡圈,导致经常错过一些关键的时间节点,比如传家宝的续费,黑五抢购,一些限时的优惠,因此,我开发了这一款MJJ提醒工具,无需服务器,还是薅我们的赛博活佛——cloudflare的羊毛,为了避免网站沉寂不工作,我们使用监控工具 cron-job.org Console 进行定时触发。

灵感来自 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 Consoleapi key只能创建一个,但是可以随时修改

  1. fork项目,1143520/deadline 或者下载源码,git上传
  2. 在 Cloudflare Pages 中创建 pages 新项目
  3. 连接您的 Git 仓库(GitHub、GitLab 等)
  4. 在 Pages 项目设置中:
    • 绑定 D1 数据库,设置变量为DB
    • 配置环境变量(见环境变量配置部分)
  • CRON_SECRET: 定时任务的访问密钥(按照个人喜好设置)

  • CRONJOB_API_KEY: cron-job.org 的 API KEY

  • PASSWORD: 防止面板被随意查看(可选)(自定义密码)

  • TG_BOT_TOKEN: Telegram Bot Token(推送到tg机器人)(这个应该都会吧)(必须至少设置一个通知,否则网站无法访问)

  • TG_CHAT_ID: Telegram Chat ID

  • WECOM_KEY: 企业微信 Webhook 地址(完整的url,推送到微信企业机器人,可选)(这个也可以网上找教程)

  • BARK_KEY: bark提醒(可选)(来自论坛)

  • FEISHU_KEY: 飞书提醒(可选)(来自提交代码)

  • DINGTALK_KEY: 钉钉提醒(可选)(来自提交代码)

  • 其他通知渠道可以在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 个不同的执行时间点

删除按钮是同时删除cron的定时任务和数据库,没有备份

欢迎点赞给鸡腿哦😚

点赞
  1. Ltachtm说道:

    nb 插眼了

  2. shuai说道:

    谢谢,这下不会忘了

  3. BuluBiu说道:

    @dilidili #106 有一个前端验证防一下小学生,设置PASSWORD变量,你不泄露域名一般没有什么问题,因为需要cron定时发送get请求,你编辑定时任务的域名不能限的太死,我是直接在WAF里面把自己的ip和cron的ip放行的,因为cron的ip是变的,我根据事件大致推测是在德国,所以就直接放行了德国


    主机名就是你的自定义域名和cloudflare分配给你的域名

发表回复

电子邮件地址不会被公开。必填项已用 * 标注

×
订阅图标按钮