Voice of Reason
Discord bot used to schedule and roster team-based esports events
Voice of Reason is a scheduling bot I made to help an esports team I am on to schedule matches. It polls day-based availability for a week, and then hour-based availability, using timestamps to show the time-zone corrected time (relevant because we have members in multiple timezones), as well as allowing confirmation of changing rosters with nice interface and icons. Players indicate availability by pressing the reaction buttons created by the bot. The thing I’m proudest of is how configurable it is; the parameters of every event are configurable via a YAML file.
Data entry was also nontrivial, because Discord form modals have a maximum of 6 inputs and disallow chaining. Since we need as many as 18 inputs to schedule more complex formats, I had to implement a “multi-page modal” which was a modal, the submission of which would cause the bot to send the user a button, which in turn provided the interaction callback to show another modal. Making this system work cleanly took substantial effort, but is far more practical than attempting to run a command with 18 parameters which would be utterly impractical.