跳转到内容

通知

设置

有事情发生时,通知会发一条 Discord 或邮件消息:有请求在等待、一部电影到了、某项健康检查出了问题。你需要有 Change settings(更改设置)权限。

  1. 打开 Settings > Alerts(设置 > 通知),点击 Add an Alert(添加通知)。
  2. 填一个 Name(名称),选一个 Kind(类型):Discord 或邮件。
  3. 填好这个类型的字段(见类型)。
  4. 在 When to send(何时发送)下面,把不想要的时刻取消勾选。一开始全部是勾选的;All of these(全选)和 None of these(全不选)对整组生效。
  5. 让 Send messages(发送消息)保持开启,点击 Save(保存)。
  6. 在卡片上点击 Send a test(发送测试)。你应该会看到消息送达,卡片上显示 Last sent(上次发送)。

在 Discord 里打开频道设置,进入 Integrations > Webhooks(集成 > Webhook),复制链接。把它粘贴到 Discord link(Discord 链接)里;链接以 https://discord.com/ 开头。在账户里填了 Discord 用户 ID 的人,会在关于他们请求的消息里被提及。

字段 填什么
Mail server(邮件服务器)、Port(端口) 你的邮件服务器
Security(安全) STARTTLS(端口 587)、TLS(端口 465)或 None。None 只用于你自己网络里的邮件服务器
From address(发件地址) 发件人地址
Mail username(邮件用户名)、Mail password(邮件密码) 邮件账户
Staff addresses(管理人员地址) 一个或多个,用逗号分隔

关于某条请求的消息会发给提交请求的人,发到他们账户里的地址。其他消息都发到管理人员地址。

Telegram、ntfy、Gotify、Pushover 和 webhook 在这个版本里暂未开放。见暂未开放的功能。

时刻 发给谁 什么时候
New request(新请求) 管理人员 一部电影、一部剧集或一位艺人在等待批准
Approved(已批准) 请求人 他们的请求已批准
Declined(已拒绝) 请求人 已拒绝,附上你的备注
Ready(已就绪) 请求人 文件已经在媒体库里
New episodes(新剧集) 请求人和关注者 每部剧集每小时最多 1 条。每个人都可以自己关掉
New albums(新专辑) 艺人的关注者 每位艺人每小时最多 1 条
Problem reported(有人报告问题) 管理人员 有人报告了某个条目的问题。报告在 /requests/reports
Problem fixed(问题已解决) 报告人 附上你的回复
Sent to download(已发送下载) 管理人员 一个资源已发给下载器
In the Library(已入库) 管理人员 文件已放好,包括换成更好的副本
Renamed(已重命名) 管理人员 文件有了新名字
Added(已添加) 管理人员 一个条目被添加,来自手动添加、列表或请求
Deleted(已删除) 管理人员 一部电影、一部剧集、一季或若干集离开了媒体库
Health(健康状况) 管理人员 某项健康检查出了问题或已恢复
Needs a decision(待你决定) 管理人员 某个下载任务或导入需要你处理

列表下方的 Season packs(整季包)决定一个包含很多集的下载任务怎么发:One Alert for the pack(整包发一条通知),每集占一行;或者 One Alert per episode(每集发一条通知)。

默认关闭。关闭时,Discord 通知只发往 discord.com,其他类型只发往互联网上的服务器;指向本机或家庭网络的链接会被拒绝,即使是域名解析之后才指向那里的也一样。如果邮件服务器或接收端在家里,就打开它。重定向永远不会被跟随。

取消勾选 Send messages。卡片会显示 Off(关闭),通知本身会保留。

加密保存,之后显示为 Stored(已保存)。字段留空就保持不变。把通知改指向另一台服务器时,你要重新输入密钥;已保存的密钥绝不会被发到新的地方。

现象:

Paste the Discord link(粘贴 Discord 链接)

原因: 链接不是以 https://discord.com/ 开头。 解决办法: 重新复制 webhook 链接。如果是家里的类 Discord 服务器,打开 Reach the local network(访问局域网)。

现象:

Points to the local network, which this Alert may not reach(指向局域网,而这个通知不允许访问那里)

原因: 服务器在本机或你的家庭网络里。 解决办法: 打开 Reach the local network。

现象: Last try failed(上次尝试失败),返回 401 或 404。 原因: 链接或令牌不对。这类错误不会重试。 解决办法: 改正后点击 Send a test。

现象: 提交请求的人什么都没收到。 原因: 他们的账户里没有邮件地址或 Discord 用户 ID,这个时刻没有勾选,或者他们自己关掉了新剧集通知。 解决办法: 检查这三项。

重试

遇到超时、限速响应或服务器错误,会在 5 s、30 s 和 2 min 后重试。服务器要求等更久时会照办,最长 5 min。被拒绝的情况不会重试,比如链接不对。每次失败都会在历史记录里加一行“Alert could not be sent”(通知无法发送)。

暂未开放的类型和它们的字段

只有打开 alert_channels_more 开关才会显示。

类型 字段
Telegram 从 @BotFather 拿到的 Bot token(机器人令牌)、Chat ID(聊天 ID,可以是用户、群组或频道的 ID,或 @channel)。要先给机器人发消息,或者把它加进群组
ntfy Server address(服务器地址,留空表示 ntfy.sh)、Topic(主题)、可选的 Access token(访问令牌)。任何知道主题的人都能读到
Gotify Server address、App token(应用令牌)
Pushover User key(用户密钥,群组密钥也可以)、App token
Webhook (JSON) Webhook link(Webhook 链接)、可选的 Secret(密钥)、What the secret does(密钥的用途)
webhook 会收到什么

每条消息一个 POST,Content-Type: application/json,带这些请求头:

请求头 值
X-HolyArrs-Event 时刻,比如 import 或 test
X-HolyArrs-Delivery 这条消息的随机 ID
X-HolyArrs-Timestamp 选了 Signs each message(给每条消息签名)时:自 1970 年起的秒数
X-HolyArrs-Signature 选了 Signs each message 时:sha256= 加上 <timestamp>.<delivery>.<body> 的十六进制 HMAC-SHA256,用你的密钥计算
Authorization 选了 Is sent as a bearer token(作为 bearer 令牌发送)时:Bearer <secret>

选了 Nothing(不做任何事)时,不发送密钥。使用签名时,要拒绝过旧的时间戳和已经见过的 delivery ID,这样复制下来的消息就无法被重放。

{
"moment": "import",
"event_kind": "import_done",
"subject": "In the Library: Arrival (2016)",
"text": "Import done: 1 placed by hardlink",
"at": "2025-01-01T18:04:11Z",
"movie": { "id": 12, "name": "Arrival", "year": 2016, "tmdb": "329865", "imdb": "tt2543164" },
"data": { "from": "/downloads/Arrival.2016.1080p" }
}

其他字段在适用时才出现:test、show 和 episodes、artist 和 tracks、report、people。people 里是请求人的名字,绝不会有地址。data 里是这条消息背后那行历史记录里的原因和路径。任何 2xx 响应都算送达。

HolyArrs 是免费的。如果它帮你省了时间,欢迎在 GitHub 上点个 Star、赞助它或请我喝杯咖啡。