I heard you like features.
(Heads up: while I have tested this to a decent extent, some of the features, like hybrid slash commands, may have a few bugs. If they do, sorry about that - I'll fix them ASAP if you report them! Also, yeah, spoilers.)
Breaking Changes:
- FEAT💥: `MolterContext`'s init has some parameters removed, and some others were given default values.
Major Changes:
- FEAT: **Add in hybrid slash commands.** These allow turning a normal slash command into a slash *and* a Molter prefixed command. Most slash commands can be turned into prefixed commands simply by changing the `interactions.command` decorator to `Molter.hybrid_slash` or `molter.extension_hybrid_slash`. These use a custom `HybridContext` object for their context, which are a subclass of `MolterContext`, *not* `interactions._Context`. See the advanced hybrid example for more information.
- FEAT: **Add native checks.** These checks take in a function that only takes in a `MolterContext`. This also introduces `hierarchical_checking` to commands.
- FEAT: Add in helper functions to compute the permissions the bot has for the specific `MolterContext`. There's also permission checks now that take advantage of them.
- FEAT: Add in `MolterContext.typing`. It works exactly how it does in `discord.py`, and similarly to NAFF's `Channel.typing`.
- FEAT: Add `MolterContext.extras` for storing whatever data you want.
- FEAT: `MolterContext.member` now has the user data injected in.
- FEAT: Add in `NoArgumentConverter` for, well, converters that don't use the argument. This allows the parser to parse arguments correctly.
- FEAT: Add in `AttachmentConverter`. Yes, you guessed it, this is *mainly* for hybrid slash commands, but hey, it's there.
- FEAT: Add `on_molter_command` event.
- PERF: Pretty much *all* of the converters were sped up as much as they can be. There's still a noticeable delay with many of them due to the lack of `interactions.py`'s cache (or at least a proper one), but it's the best you can get right now.
- DOCS: The new `README.md` looks nice, huh?
Other Changes:
- FEAT: Typehint a lot of return values. This likely won't affect you as IDEs could already pick up on the return values, but it's nice.
- FEAT: Add in `guild_only` and `dm_only` checks.
- FIX: Make `MolterContext.get_guild` return a guild if there is one.
- FIX: Pass down `*args` and `**kwargs` when tearing down `MolterExtension`.
- FIX: Properly bind `self` to Molter subcommands.
- STYLE: *Lots* of making Pyright and Sourcery shut up.
- CHORE: Ignore Visual Studio Code files. Sorry, PyCharm.
- DOCS: Update examples with checks and hybrid command support.
- DOCS: Add note about `MolterContext.author` being very much *not* like what `interactions.py` does.
- DOCS: `MolterContext.send/reply` use Molter-style docs now.
- DOCS: `MolterException` has a docstring now.
- DOCS: Explain that `MolterExtension` *should* be able to handle applications commands (see 4 - the bug there is very rare though).
- DOCS: Remove most mentions of NAFF and replace them with `molter-core`, though NAFF's influence is very much noted.
- DOCS: There's a section on the `README.md` explaining the purpose of each branch now.
- CI: Update `pre-commit`.
**Full Changelog**: https://github.com/interactions-py/molter/compare/v0.4.3...v0.5.0