UQComputingSociety / uqcsbot-discord

:mortar_board: UQCSbot: Our friendly little Discord bot
https://discord.uqcs.org
MIT License
20 stars 20 forks source link

Reworked advent of code. #183

Closed 49Indium closed 11 months ago

49Indium commented 1 year ago

Refreshed all of advent of code to work with the new slash commands. This includes:

I will go over some of this tomorrow (including a full text guide that will be part of the wiki), but thought I'd get it out as soon as possible so that people can have a look. Note that to test the bot, you will need to fill out the environment variable AOC_SESSION_ID (this explains how to get it).

For a rough description of the new commands: /advent help - Display help menu /advent leaderboard - Display a leaderboard. Many sorting options and different leaderboard styles /advent register - Register an AOC id to the current discord username. Used for registrating for prizes /advent register-force - Force a registration between an AOC id and a discord user. Used for moderation and admin reasons /advent unregister - Unregister an AOC id to the current discord username. /advent unregister-force - Force-remove a registration between an AOC id and a discord user. Used for moderation and admin reasons /advent previous-winners - Show the previous winners from a year /advent new-winner - Add a discord user as a winner (chosen directly or by random selection) for prizes /advent remove-winner - Remove a winner for the database

katrinafyi commented 1 year ago

Feel free to ignore (and this is not against the work) but I've privately held that there's no need for such complex and single-use machinery in uqcsbot. Aside from verification, the prize giving is quite simply solved by a spreadsheet and a random.choice(). Of course, there is the argument for transparency but the committee is trusted with so much more anyways :shrug:

andrewj-brown commented 1 year ago

Feel free to ignore (and this is not against the work) but I've privately held that there's no need for such complex and single-use machinery in uqcsbot. Aside from verification, the prize giving is quite simply solved by a spreadsheet and a random.choice(). Of course, there is the argument for transparency but the committee is trusted with so much more anyways šŸ¤·

I think there are enough complicated and/or fiddly parts that code could help with for it to be worth it. Specifically the registration/verification stuff - while it was no different to rolling a dice in previous years, expanding the registration system with this PR removes all the annoying "do a draw -> they don't want it -> do a draw". Also weighting by number of stars, which is a bit of annoying math to do with a spreadsheet anyway.

If verification happens in the future, it'd be even more useful, because we'd have a better system than just "send me a screenshot logged-in and promise you didn't inspect-element it".

JamesDearlove commented 12 months ago

My review doesn't carry a ton of weight, shout out to @andrewj-brown going through it, but lgtm. Nice work!

My only comments are whether the register commands should be ephemeral or not. I'm not really swayed either way but it might create a little bit of bot spam sitting around.