Releases: robertwayne/dpymenus
v2.1.5
v2.1.4
[2.1.4] - 2021-19-05
Changed
- Optimized how menus handle reaction events in different channel types. This will benefit menus in Guild Channels during high-latency situations, where a reaction remove event could add an extra request on changing a page (it would make an extra delete request on the removal).
v2.1.3
[2.1.3] - 2021-15-05
Changed
- Fixed a regression where buttons weren't being handled safely in DM's.
- Fixed an uncommon occurrence where closing menus would raise an AttributeError instead of returning.
v2.1.2
[2.1.2] - 2021-14-05
Changed
- Fixed a bug where PaginatedMenus did not check for an existing cancel page when closing (
.set_cancel_page()
).
v2.1.1
[2.1.0 - 2.1.1] - 2021-13-05
Changed
- Fixed a bug where closing out certain menus would result in trying to remove reactions on None-types (see #54).
- Fixed a bug with input logic flow on button menus that would result in raising InvalidArgument errors.
- Fixed a bug where session force closing would raise an InvalidArgument error.
- Updated several book instructions in regard to installing and running examples on Windows.
- Removed an old dev dependency carry-over from the example runner (uvloop) that caused issues on Windows.
Added
- Session settings for users can now be set. Please note the system isn't complete yet, but you can now keep
multiple menus alive at the same time, or have the earliest one close if there are too many. Currently, only the
user limit applies. Please see the book for more information.
v2.0.0
[2.0.0] - 2021-13-05
Highlight Features
- Templates: apply styles across entire menus by using the new templating system
- Hooks: events can now be hooked into with your own functions
- Settings: settings are now configurable via a configuration file
- Documentation: the API docs have been reworked, a book has been added with lots of detailed information, and several
new examples were added (additionally, all old examples were updated).
Added
- Session handling has been completely rewritten. This technically will not be fully functional until v2.1, but from an
external view, it will work the exact same (without some of the common annoyances from before). - The new Discord
reply
feature is now supported by menus. This can be configured via settings. - Menus now support setting an initial page with a new method:
.set_initial_page()
. - Examples can now be run with a built-in bot.
Changed
- Buttons are now throttled by default to avoid filling up rate limit buckets too quickly. This was a source of much
confusion. This can be configured via settings. - Destination errors now fail gracefully.
- Fixed many bugs and optimized various logic paths.
Removed
.allow_multisession()
no longer exists. This is the default now (as per popular request), and can be configured
via settings.- Support for Python 3.7
Internal
- Poetry is now the package and build tool.
- Black is now the formatter.
- Almost all the internal code was rewritten resulting in better performance and/or cleaner code. Note that this could
mean your menus will break, if you were using any internally marked methods (prefixed with an underscore).
v2.0.0a1
Minor bug fixes and default behavior changes.
- Reply functionality is now False by default.
- Menu timeout can now be set globally within settings.
- Fixed a bug with timeouts in PaginatedMenus.
- Fixed the output on some error strings.
- Updated the book to reflect new defaults.
v2.0.0a0
[2.0.0a0] - 2021-05-06
This is a pre-release version of dpymenus. It contains several breaking changes, as well as lots of improvements, performance fixes, bug fixes, and new features. This is an ALPHA version, and is not feature complete yet. This version does not contain SourcePaginatedMenus or MultipleChoiceMenus, session restore features are not completely implemented, and documentation is not complete.
Major new features that are complete include: Event hooks, templates, and settings.
This version includes a new book (incomplete), which will contain everything about the library along with the examples and API docs.
If you are testing this version, please make sure you tag your issues appropriately.
Added
- Various settings can now be configured via a pyproject.toml file in your root directory. This includes things such as button delays, reply functionality, session handling, cache limits, and warning disables.
- Available settings can be found here.
- Events in the menu lifecycle can now be hooked into with your own functions. See here and here.
- Templates have been added. All menus now accept templates, which can be used to define styles across your menu for code simplification and DRY. The chapter on this feature is incomplete, but there is a working example in the examples/ directory.
- Session handling has been completely reworked, though it is not complete yet. In general, the defaults should not cause friction between developers and the library anymore.
- Added MANY new examples. Some are still not implemented.
- Added support for the new Discord reply feature.
- Menus can now have an initial page set via
set_initial_page
method. See relevant example. - Added an example runner so users can try out all the examples easily. See here.
Removed
allow_multisession
is now the default and the method no longer exists. It has been replaced with explicit session settings.
Changed
- Buttons are now throttled by default to avoid filling discord.py rate limit buckets. This is adjustable via the new settings.
- Almost all internal methods were completely rewritten. If you used any internal calls in your code, it will likely break your bot.
- Constants can now be overridden via the new settings.
- Destination errors now fail gracefully.
- Many bug fixes.
- (Internal) Poetry is now used as the package & build manager.
- (Internal) Black is now used as the formatter.
Migration instructions have not been written yet, but in general I don't expect much to be broken unless you were overriding internals.
v1.3.1
v1.3.0
[1.3.0] - 2021-01-09
Changed
- Menus now only require a single page to successfully build. The original reasoning behind having this restriction was based on the fact that a menu is generally going to consist of many pages. However, there have bene several use-cases such as reloadable pages and dynamically generated menus, that may result in just a single page.
- Fixed
reloadable_data_example.py
having a missing import. - Updated
reloadable_data_example.py
to reflect the page validation change and remove the workaround requiring an empty blank page. - Updated dependency on
discord.py
to1.6
.