| Commit message (Collapse) | Author | Age | Lines |
| |
|
|
|
|
|
|
|
|
|
|
| |
Trying to change the rich presence status of the bot too early in the
bot's start-up sequence will cause the task to fail. To make it wait,
I've added a `bot.wait_until_guild_available` point before the main loop
of the task starts.
This seems to solve the issue reliably, despite the `guild_available`
event not being directly related to when the bot's connection with the
API is ready to accept presence updates. However, the `ready` event is
know to fire too early, according to the discord.py community.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I've refactored the rich presence countdown task by making it hibernate
until 2 hours before the next Advent of Code starts if the task starts
up before the event has started. This ensures that the task will run
when the event starts and allows it to countdown to the first challenge.
After the event for the configured Advent of Code year has finished, the
task will terminate. This also means that the task will terminate
immediately in the year following the currently configured Advent of
Code; it will only start hibernating again once we configure the bot for
the next event.
No unnecessary, year-long hibernation.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Our Advent of Code background tasks were written in such a way that
they relied on the extension being loaded in December and only in
December.
However, since the deseasonification, the extension is loaded prior to
December, with some commands being locked to that month with a check
instead. This meant that our background tasks immediately cancelled
themselves, as they observed themselves to be running outside of the
boundaries of the event. As there was no mechanism for starting them
back up again, these tasks would only start running again after
redeployment of Sir Lancebot.
To solve this issue, I've added a helper function that allows tasks to
wait until a x hours before the event starts. This allows them to wake
up in time to prepare for the release of the first puzzle.
|
| |
|
|
|
|
|
| |
The daily stats function contained a bug that prevented it from working
correctly. The reason was that I was looking for `int` keys where the
actual keys were strings. I now make sure to create a `str` from the
`int` I get back from `range`.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
I've added support for ignoring scores from specific days. A list of
days to ignore can be provided using the environment variable
`AOC_IGNORED_DAYS` as a comma-separated list.
This example would ignore day 1 and day 23:
AOC_IGNORED_DAYS=1,23
I've also added a helper function to sort the leaderboard not only on
the achieved score, but also on the number of stars an individual has
completed.
|
| | |
|
| | |
|
| |
|
|
|
| |
Note: This won't start the countdown functions yet, they still rely on
the cog being loaded in december.
|
| |\
| |
| | |
Advent of Code 2020
|
| | |\
| |/
|/| |
|
| |\ \
| | |
| | |
| | |
| | | |
python-discord/sebastiaan/ci/add-core-dev-approval-check
Add check for core dev approvals on pull requests
|
| | | | |
|
| | |\ \
| |/ /
|/| | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This commit adds a workflow that checks if a pull request has received
at least one approval from a core developer. If not, the check will fail
and block us from merging the Pull Request.
The reason we're adding this check is because we're moving away from
making the Core Developers team "code owner" of every line in every
repository. This created a lot of "notification" spam, which drowned out
the actually relevant notifications.
This will accomplish the same, at least one core dev needs to approve,
but without the notification spam.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
I've moved the helper functions to the _helpers.py module and clarified
the docstring of the `is_in_advent` helper function.
|
| | | |
| | |
| | |
| | |
| | | |
There were still two constants left over that were no longer used after
the rewrite. I've removed them.
|
| | | |\
| |_|/
|/| | |
|
| | | | |
|
| |/ / |
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
I've updated the information for the about embed:
- Added information on the scoring of private leaderboards
- Changed the text of "join our private leaderboard", as we no longer
have to introduce private leaderboards there.
- I've also streamlined the section on Auth providers.
|
| | |
| |
| |
| |
| | |
I accidentally removed the global leaderboard command. I've added it
back!
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| | |
We're no longer going to use a two-channel setup for this event, as we
don't want to split the event community into two, staff and non-staff.
|
| | |
| |
| |
| |
| |
| | |
This helper function was only being used in one spot and did not factor
out any logic. I've removed the helper function to just create the embed
where it's needed.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
I've rewritten the Advent of Code leaderboard logic. Unfortunately,
nearly all of the changes made are interrelated, meaning that they've
ended up in the same commit.
To add a bit of structure to the extension, I've chosen for a subpackage
structure instead of a single file structure.
The biggest changes:
- Whether or not you get a join code for the staff leaderboard will now
be determined by looking for the Helpers-role.
- The Python Discord Leaderboard now includes all boards, including the
staff leaderboard. This is one event.
- Redis is now used to set a cache expiry period. This means that our
code does not have to check for cache staleness; Redis will do that
for us.
- The period "fetching" task has been removed. We now fetch solely when
the data is needed to prevent putting unnecessary stress on the Advent
of Code website.
- The option to display the Global Leaderboard within Discord has been
removed. Rather, we now link to the website. This simplified the code
for now, although we could add it back later.
- An additional command, `.aoc refresh`, has been added to allow Admins
and the Events Lead to force the cache to be invalidated. This should
be done sparingly to not overburden the AoC website.
- I've also made sure that the daily notification task actually pings
the notification role by setting the `allowed_mentions` kwarg.
|
| | |
| |
| |
| |
| |
| | |
As the Advent of Code file was getting massive, I've removed the old
single-file based extension as I'm going to replace it with a partially
rewritten subpackage-based extension.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
I've added a unified approach to setting data for multiple leaderboards
using environmental variables. Instead of setting separate variables for
the three pieces of data we have, hoping that the position of each board
matches up in the three fields, I now set one environmental variable,
AOC_LEADERBOARDS, that holds delimited data.
The data is in the format:
board_id1,session1,join_code1::board_id2,session2,join_code2[::...]
The staff leaderboards should be included as usual in this environmental
variable. Another environment variable, AOC_STAFF_LEADERBOARD_ID, can be
used to designate which leaderboard should be used as the staff board.
I've also made some other constants configurable in this commit and
added the role ID of the Events Lead role to allow the Events Lead to
force a reload of the leaderboard cache.
|
| | |
| |
| | |
Co-authored-by: Joe Banks <[email protected]>
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| |/ |
|
| | |
|
| | |
|
| |\ |
|
| | |\ |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | | |
This commit implements a wonder twins inspired command. This is a purely fun command that uses real transformations from the show to make random new transformations. The yaml is all hand transcribed from the actual show.
|