一个自定义脚本,解决青龙面板任务通知的消息轰炸问题

目录
[隐藏]

1 青龙面板的任务通知消息轰炸问题

青龙面板是一个脚本任务管理平台,可以帮你定时的执行任务。如果你拥有一台个人 NAS 但却还不知道它,可以阅读一下前面发表的相关文章:

许多人都会通过青龙面板订阅第三方开发的脚本,来完成定时签到、刷积分等任务。同时还会配置消息通知,以便在任务完成或执行失败时,及时通过微信、邮件等渠道获得通知。

一个非常令人头疼的问题是,直接订阅第三方脚本虽然省时省力,但其脚本任务执行后发送的消息通知中常常也包含了大量广告,并且基本不支持个性化的消息通知配置。当订阅的任务很多时,大量任务的消息通知变成了消息轰炸,但是全部接受或全部关闭都不合适。

2 一个支持自定义消息内容过滤的 Node.js 脚本

我期望的消息通知是这样的:对于所有配置定时执行的任务,应仅在执行失败、CK认证信息失效、抽奖任务中大奖、新闻阅读订阅等需要人为介入处理的情况下才发送。

我编写了一个 Node.js 脚本帮我实现这种目的,你可以从下面的地址获取到其最新版本的源码:

  • https://mirror.ghproxy.com/raw.githubusercontent.com/lzwme/ql-scripts/main/ql_ModifySendNotify.js

青龙面板的消息通知通过 sendNotify.jsnotify.py 两个文件实现。当订阅或更新一个第三方仓库时,也会同时将这两个文件复制到为该仓库创建的脚本目录下。该脚本执行时会查找所有订阅脚本目录下的这两个文件,在发送消息的函数中插入自定义代码拦截,实现消息自定义过滤能力。

该能力支持通过环境变量配置的方式实现,各环境变量及作用具体如下:

  • QL_NOTIFY_ALLOW_WORD: 指定当消息的标题(一般是脚本名称)或消息内容包含指定的关键词时,才允许发送通知。多个关键词用逗号分隔。其默认值为 签到失败,登录失败,异常,未登录,❌,已失效,无效,重新登录,未找到,水果奖励,京东资产统计,[60s],[🔔],[💌]
  • QL_NOTIFY_REPO_WORD: 订阅脚本仓库名称中包含该配置指定的关键词,才修改该目录下的消息通知文件。多个关键词用逗号分割。其默认值为空,即全部订阅的仓库都会处理。
  • QL_SCRIPTS_DIR: 指定青龙面板 scripts 目录的路径。默认值为 /ql/data/scripts

此外,青龙面板自带支持环境变量 SKIP_PUSH_TITLE,可配置脚本通知名称以跳过该脚本发送的所有通知,多个任务使用换行分割。由于其是按脚本名称完全匹配并全部过滤,并不是太实用。

3 自定义脚本 ql_ModifySendNotify.js 的用法

首先是下载该脚本到青龙面板中。

可以直接打开上述脚本地址,复制其内容,并在青龙面板中新建一个脚本,将内容粘贴进去,脚本名称为 ql_ModifySendNotify.js。如果你的青龙面板是通过 docker 部署的,就得到了一个这样的脚本:

/ql/data/scripts/ql_ModifySendNotify.js

当然,你也可以直接通过青龙面板订阅该脚本所在仓库,好处是按订阅计划定时更新仓库,可以及时更新到最新的版本:

https://github.com/lzwme/ql-scripts

具体订阅方法请参考仓库说明。订阅成功后,就得到了这样一个脚本:

/ql/data/scripts/lzwme_ql-scripts/ql_ModifySendNotify.js

然后是配置该脚本。在青龙面板的“订阅管理”中,编辑每一个订阅信息,在“执行后”的参数中输入 node [脚本路径],参考如下图:

这样每当任务执行完毕,都会调用该脚本执行替换操作。

最后就是根据第二部分的内容,在青龙面板配置QL_NOTIFY_ALLOW_WORD等环境变量,达到按关键词过滤实现自定义通知的目的。
当然,可能默认值已经可以满足你的要求,此步骤就是可选的了。

设置完毕可手动更新一下任意一个订阅,该脚本也会在订阅更新后执行一次。

如果一切顺利,则以后所有任务的消息通知,只有其标题或内容包含自定义的关键词时才会真正发送出。

点赞 (0)

发表回复

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

Captcha Code