#bot #advent #webhook #private #aoc #leaderboard #puzzle

nightly app festive-bot

用于跟踪私人Advent of Code排行榜上发生事件的机器人

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

MIT 许可证

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_LEADERBOARDFESTIVE_BOT_SESSION。这些是要监视的私人排行榜的ID以及一个可以访问该排行榜的AoC账户的会话cookie。

可选地,也可以提供环境变量 FESTIVE_BOT_NOTIFYFESTIVE_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