The big 2.0, a version we never suspected we'd make. We think there were enough major changes this version to warrant it, though. We promise we've been working over the past nine months!
**NOTE:** This is a major release and as such will contain breaking changes. It is recommended that you install Red Star from scratch, as important features including the Cupboard and portability by default have been removed!
**NOTE:** Python 3.7.0 or greater is now **required**!
Changes:
\+ Red Star has been converted to an installable package! This also means that this will be the first Red Star release on the Python Packaging Index, right [here](https://pypi.org/project/red-star/)!
\+ In combination with this, Red Star now creates and uses a folder in your user directory for storage of configuration and data (defaults to `$HOME/.red_star`). This can be disabled with the `--portable` command-line flag.
\+ Reminder plugin added; allows users to set reminders with a given message at a specified time or delay, with optional recurrence.
\+ Voting plugin added; allows users to easily create, vote in, and tally the results of polls with up to 16 options.
\+ Custom Commands parser has been entirely reworked; instead of using the old tags system, Custom Commands are now written and parsed in our own dialect of Scheme, RSLisp, allowing for much more powerful commands to be easily written.
\+ Red Star now supports command-line arguments; see the README.md for their descriptions.
\+ Added a global tick plugin event to fire events that should be run on intervals, rather than requiring each plugin to handle its own timer.
\+ Added ReloadPlugin, a bot management function that reloads a plugin from source.
\+ Added RSArgumentParser, a subclass of argparse.ArgumentParser allowing commands to more flexibly and easily process arguments.
\+ Purge now supports several flags, making it much more flexible. See its documentation for details.
\+ In a similar vein, SetConfig also supports several flags to much the same end.
\+ GetConfig and SetConfig can modify other plugins' config files with the `--file` flag.
\+ Certain bot management commands can now be used in DMs
\+ Bot will now forward DMs sent to it to bot maintainers
\+ Announcer plugin now includes the ability for the bot to respond to being pinged with random messages.
\+ CreateCC and EditCC now accept `--source` flag, allowing files containing raw RSLisp source code to be uploaded easily.
\+ Added MusicConfig command to allow server owners to configure per-server Music settings.
\+ Music Player's printing of queue on edit is now configurable per-server.
\+ MotD now allows a different MotD file to be used on a per-server basis.
\+ MotD now supports strftime format-strings in MotDs.
\+ Added get_guild_config utility function for easily handling per-server configuration options.
\+ rs_version file added to package to allow single-source version numbers.
\+ All plugins have had missing metadata added to them.
\- Several plugins (namely, Channel Dump, Console, Leveling, and Roleplay) were removed from the core distribution. These plugins are now available at [the extra plugins repo](https://github.com/medeor413/Red_Star_Plugins), and can be installed by simply dropping them in the `plugins` folder in Red Star's config folder.
\- The Cupboard storage system has been entirely removed in favor of the new per-plugin JSON file feature.
\- DotDict has been removed and all of its uses have been converted to standard dictionaries.
\- Dropped schedule requirement.
\- Removed time display from Music Player.
\~ Red Star now requires, at minimum, Python 3.7 or higher.
\~ Music Player has been entirely rewritten to be more readable and lightweight. Some features may still be missing from the old version.
\~ Music Player can now queue songs asynchronously, allowing playback to start as soon as the first song in a playlist is downloaded.
\~ Music Player will now output specific errors when a video fails to download.
\~ All instances of discord.Game are now discord.Activity, following changes in discord.py.
\~ CreateRole and EditRole use the new flag system as well.
\~ split_message utility function now takes a max_len argument.
\~ response is no longer a required argument in respond.
\~ is_positive utility function now returns a more verbose error.
\* Definitely some bugs fixed, but too many to list and many unfortunately undocumented in commits or wiped by rewrites.