With this major update I'm excited to bring you the new giveaway command, an improved music system, and more! The giveaway command replaces the old lottery command and greatly improves on the old experience. The music system was re-written and contains tons of improvements and new features bringing us closer to release. Along with those there's the return of pro airing sync, some new dashboard features, and a big list of improvements to other features.
This update includes an all-new giveaway command that I've been pretty excited for. We've had the lottery command for a long time now, but it's never been what I wanted. I wanted to give our users the ability to create whatever type of giveaway they wanted. The lottery command just wasn't designed for that, and it was kind of confusing to use. The giveaway command has a completely re-worked user experience for both the creator and the entrants.
When you create a giveaway you'll be met with a new system designed to make doing complicated configuration in Discord easy. Navigate through the menu and chose the settings you want for your giveaway with visual feedback the whole way. If you want to speed-run your way through, there's also a shortcut that allows setting the main configuration options in one command. After you create your giveaway all users have to do to enter is click the reaction button. This provides easy visual confirmation that a user has entered, and lets you get an idea of how many users have entered already.
This command has some noticeable differences from the lottery command. Every user can have one giveaway per channel, so multiple giveaways can be run at once in the same place. You can also restrict who can create giveaways to a certain role. When ending a giveaway, you must confirm it, preventing you from mistakenly deleting everything. Most importantly, this command lets you customize the giveaway with the options shown here.
As I tried to work on the music system to make it more feature-complete I began to notice a lot of flaws in its design. I ended up decided it was best to re-design it with the release features in mind. The new system is much more maintainable and has some important new features included. Most importantly, all music data is stored in Redis instead of the process's memory. This means that we can restore data from crashes and other issues, and our cache remains intact after restarts. Popular tracks will resolve more quickly, as they don't need to be fetched as often. Additionally, if your music player stops without you commanding it to, Mirai will try to restore it later, resuming from the next item in the queue.
I've also made a lot of quality-of-life improvements to the music commands. One major usability issue is that people would confuse the play command with the queue command. Because of this
play is now
queue has the alias
play. The queue command also used to handle things like
listen.moe as the list command, so I've changed it to only run sub-commands with exact matches. Thanks to the new version of Lavalink, you will also be given more informative errors in most cases.
As some of you may know, MyAnimeList shut down their API early this year. Because of this Mirai was unable to fetch anime lists to auto-subscribe pro users to airing notifications. In this update Mirai uses AniList, so anyone wishing to use this feature can link their AniList account and have the same functionality as before.
The dashboard now allows anyone (yes, even non-mods) to easily view the status of votes and giveaways. Here's an example: