-
-
Notifications
You must be signed in to change notification settings - Fork 315
Description
The current DSharpPlus.Commands
extension was merged in #1680 under the understanding that it was merged for public access to get better feedback on its design and feature set from uesrs and to get more experience working with its implementation. This was completed on January 30, 2024, and now nearing the end of 2024 I believe it is time to aggregate this feedback and experience and begin organizing and tackling it. There are many issues that have been known for longer, some that have been uncovered more recently; features that have been long-standing requests or made more recently respectively, and I intend for this to serve as a discussion hub for these issues, proposals and ideas.
I will divide this issue into 'change waves', broadly categorized by admittedly somewhat subjective views on which things should/need to be done before others. This is not a fixed order nor to be understood as a requirement, but merely as what I believe will help in implementing them without duplicating much work and generally making life unnecessarily difficult for ourselves.
In considering the feature set and design of the extension, we should keep in mind that the v5 release cycle is intended to both be more stable than all of its predecessors and to support the potential need for a much longer-lived release cycle than its predecessors. Furthermore, v5 is intended to cleanly support a wider range of use-cases, for the first time in library history emphasizing larger bots' requirements. Therefore, both grand design and individual implementations must be conceived keeping scalability, performance, user experience and resilience to changes and requirements external to the library in mind.
All items will (eventually) have dedicated issues elaborating in further detail.
Change Wave I
- Create a more robust and flexible command metadata system #2180
- Improve currently existing dynamic application command registration and deregistration #2181
- Improve the setup experience of subsections of the Commands library #2182
- Fully support dependency injection in the Commands library #2183
- Improve Commands error reporting #2184
- Move checks and converters to using result types #2185
Change Wave II
These features may in part or in whole depend on work previously outlined.
- Put an end to the notion of command processors #2186
- Abstract localization, choice providers and autocompletion #2187
- Support dynamic registration and deregistration of commands #2189
- Support saving and restoring command trees and remote associations #2188
- Allow simplified extension setup à la minimal APIs #2190
- Support early, configurably ephemeral, deferral before checks execute #2191
- Abstract entities from being received in commands #2198
Change Wave III
These features may in part or in whole depend on work previously outlined.
- Support overloading text commands #2192
- Support CLI syntax in text commands #2193
- Support a help command in text commands #2194
- Introduce support for buttons-as-commands #2195
- Introduce support for modals-as-commands #2196
- Introduce support for selectmenus-as-commands #2199
- Improve tracking capability of command execution progress #2197