A friendly reminder that `molter` is in beta for a reason 😅.
Breaking Changes
- FEAT💥: Remove hybrid command support for now. The new `interactions.py` version makes the old system not really work.
- FEAT💥: Move `on_molter_command` to trigger right *before* execution of the command itself, rather than happening afterwards.
- FEAT💥: Remove the `fetch_data_for_context` from `molter.setup` (and the class it generates). It's unneeded now.
- FEAT💥: Make most of the setup arguments keyword only.
- FEAT💥: `MolterContext.channel` and `MolterContext.guild` will always be there without needing to use `get_x` (in fact, those functions have been removed), suggesting they exist. `MolterContext.guild` can still be `None` in DMs.
- FEAT💥: The permission helpers in `MolterContext` have been totally changed, being a simple property instead of a co-routine now. It is worth noting that `compute_guild_permissions` has no alternative now; use `molter.guild_permissions` for that if you need it.
- FEAT💥: Parameters for prefixed commands are parsed at bot startup (for those in the main file) or when the extension that has them is loaded, instead of being parsed as the `PrefixedCommand` object is created. This is a very technical change - I don't expect people to face issues over this, and this will likely bring a small performance upgrade. You'll need to use `PrefixedCommand._parse_parameters` if you add in a command after either of those two, though.
- FEAT🔥: Deprecate `MolterManager.prefixed_command` - you can use `molter.prefixed_command` in your main file now.
- FIX💥: Remove the alias from a prefixed command if you specify to remove an alias to any of the "remove prefixed command" helpers.
- CHORE💥: Bump the `interactions.py` version to `4.3.0`.
- REFACTOR💥: Rename `Molter` (the object) to `MolterManager` to make things less confusing.
- REFACTOR💥: `MolterManager.prefixed_command` no longer adds the prefixed command to the internal storage of prefixed commands - it simply just creates the class. As prefixed commands in the main files are automatically read and stored as the bot is booting up now, this shouldn't cause any problems unless you were making commands *after* startup.
Major Changes
- FEAT: Molter is now much, *much* faster as it uses the cache introduced in `4.3.0` to full effect. You *will* notice a difference, especially if you used one of Molter's converters. The UX has also been massively improved because of this.
- FEAT: `molter.prefixed_parameter` exists now, which for now allows you to adjust the defaults for parameters to use, say, a function.
- FEAT: Add `ext_error_handler` for `Extension`-wide erorrs, and `PrefixedCommand.error` for specifically scoped errors. There a whole file in the advanced examples folder explaining them.
- FEAT: Add in `MolterContext.me` and `fetch_me` for fetching the current bot user.
- FEAT: Add `MolterExtensionMixin`, which will allow you to use Molter alongside other extensions that have their own `Extension` subclass to use for your own `Extension`. Extension is a word, I promise.
- FEAT: You can use `molter.prefixed_command` in main files now, and it's actually preferred that you do so.
- FEAT: Add `molter.text_command` if you love Discord's naming scheme that much.
- FEAT: Add `on_molter_command_complete` for the old `on_molter_command` behavior.
- FEAT: Add `MolterManager.remove_prefixed_command`.
Other Changes
- REFACTOR: Use `typing_extensions.Self` rather than a forward reference to the class.
- REFACTOR: Typehints have been polished up.
- FIX: Try getting the guild ID from the channel if it isn't there for the message. This is so unlikely though that this change borders on unnecessary.
- FIX: There's also like 50 more of them, which include checking for an overwrite's existence for the permission helpers.
- CHORE: Remove the now unneeded `attrs` requirements, as `interactions.py` does that.
- DOCS: Like, a *lot* of polishing and rearranging. Did you know that I completely forgot to do an example for `typing.Union`? I have no idea how I even did that.
**Full Changelog**: https://github.com/interactions-py/molter/compare/v0.5.0...v0.6.0