11个稳定版本
1.1.1 | 2023年12月26日 |
---|---|
1.1.0 | 2023年11月29日 |
1.0.12 | 2022年12月22日 |
1.0.4 | 2022年11月30日 |
#1072 in Web编程
每月下载 49 次
34KB
531 行
Festive Bot
Festive Bot是一个Rust编写的机器人,用于跟踪私人Advent of Code (AoC)排行榜上发生的事件。Festive Bot从https://adventofcode.com读取排行榜数据,解析谜题完成事件,并使用webhook HTTP URL报告更新。
webhook HTTP请求符合Discord的webhook API,这是Festive Bot唯一经过验证支持的服务。其他服务的webhook API可能(部分)兼容,但我不能保证。
用法
环境变量
必须在运行时提供环境变量 FESTIVE_BOT_LEADERBOARD
和 FESTIVE_BOT_SESSION
。这些是要监视的私人排行榜的ID以及一个可以访问该排行榜的AoC账户的会话cookie。
可选地,也可以提供环境变量 FESTIVE_BOT_NOTIFY
和 FESTIVE_BOT_STATUS
。这些是webhook的HTTP URL,分别定义了谜题完成通知和关于Festive Bot状态(包括不可恢复的错误)的消息发送位置。这两个变量可以包含相同的URL,如果未设置,则不会为相应的变量发送HTTP请求。
命令行选项
Usage: festive-bot [--all-years] [--period mins] [--standings mins] [--heartbeat mins]
默认情况下,Festive Bot只会报告当前年份AoC的谜题完成情况,因此只有在12月才有实际作用。设置 --all-years
标志允许报告过去AoC年份的谜题完成情况,尽管这些年份的排行榜排名不会宣布。
节庆机器人以循环方式运行,从AoC排行榜获取事件,发送webhook,然后休眠到下一个迭代的开始。默认迭代周期为一小时,可以通过--period mins
选项修改,指定分钟数。mins
参数的最小接受值为15分钟,限制以避免向AoC API发送请求过于频繁。为确保每个迭代在每天05:00 UTC开始(新谜题解锁的时刻),mins
必须能够被1440整除(即一天)。
在12月,节庆机器人将定期宣布当前的排行榜排名。默认的排名公告间隔为一天,可以通过--standings mins
选项修改,指定公告间隔的分钟数。mins
参数的最大值为10080(一周),并且必须是迭代周期的倍数。
您可以选择性地向状态webhook发送心跳状态消息,这在节庆机器人在您无法轻松监控的机器上运行时非常有用。默认情况下,不发送心跳消息,但可以通过--heartbeat mins
选项启用,指定心跳间隔的分钟数。mins
参数的最大值为10080(一周),并且必须是迭代周期的倍数。
缓存文件
每年,每个排行榜的时间戳文件(例如,2015年和排行榜ID 123456的timestamp_2015_123456
)将缓存到节庆机器人的工作目录。在相应时间戳之前发生的谜题完成不会报告。如果需要,可以手动编辑这些文件;它们应该是UTF-8编码,并符合RFC 3339日期和时间标准。
自定义评分
由于在某些时区中不方便在官方AoC排行榜上竞争,节庆机器人实现了自定义评分系统。根据自谜题发布以来完整的24小时周期的倒数分配每个谜题的分数。
每个星期的第一天每个星星值一分,第二天半分,第三天三分之一,以此类推。这使每年的最高分数等于星星的数量,允许参与者根据方便的时间安排AoC,并确保每个谜题完成都获得非零数量的分数。
依赖关系
~6–19MB
~286K SLoC