Releases: brainboxdotcc/DPP
v10.0.15 release
We are happy to announce the release of D++ 10.0.15 which is mainly a hotfix release, plus the first release which should soon be available on vcpkg. We are currently awaiting approval of our PR which will list D++ on the vcpkg platform. Stay tuned on our discord server for when this is approved!
The changelog is listed below:
Release Changelog
💣 Breaking Changes
- Updated and reworked
guild_auditlog_get
✨ New Features
- Added a check if the
channel_id
in theguild_member_move
method is 0 to disconnect the user
🐞 Bug Fixes
- Change version file generation for vcpkg to use our version, not the date
- Make non-blocking connect work on Windows
- Fix path for compilation when compiled within another cmake project
- Used wrong function in
format_username()
when removingfmt::format
- Don't use nonblocking connect on osx, for some reason it may not like it
- Use a setting instead
- Wrong env syntax
- Vcpkg stuff, make sure it doesnt run in the github ci
📜 Miscellaneous Changes
- Update
CMakeLists.txt
- Update supported platforms
- Update
README.md
👷 Build/CI
- Allow vcpkg action on
workflow_dispatch
📚 Documentation
- Fixed some links
Thank you for using D++!
v10.0.14 release
We are happy to announce the release of D++ 10.0.14! This release has a small number of changes, however one is significant. We no longer require fmtlib as a vendored dependency of D++. As we are aware that a lot of people are using this vendored dependency directly via #include <dpp/fmt/format.h>
we have preserved the include/dpp/fmt
folder for the time being, however this copy of fmtlib will emit a warning when included. At some point in the future (maybe the next major version or API release) we will remove fmtlib entirely from D++'s include directory. You should use this time to update your bots to use your own copy of fmtlib instead.
Alongside this change we have also added a new cluster::shutdown()
method which can be used to terminate a cluster without destructing the object, after which you can potentially call cluster::start()
once more.
We have also now added a new enum called dpp::start_type
which wraps the true and false values passed to the cluster::start()
method. This allows for the code to be more obvious, e.g. bot.start(dpp::st_wait)
instead of bot.start(false)
. Of course, true
and false
still work just fine too, so this is not a breaking change.
The changelog is listed below:
Release Changelog
✨ New Features
- Add feature
cluster::shutdown()
which allows shutdown of cluster without calling destructor, can later callstart()
again to bring it back up if needed. Ties together with fix #431 - Add max and min length for string input types
🐞 Bug Fixes
- Fixes #431 allowing for graceful close of websocket shards.
- Exceptions potentially not caught when reconnecting failed websocket in voice client
- Potentially calling close with invalid fd, reported by jblaswu#6284
♻️ Refactoring
- Remove fmtlib, we don't really use many features of it, and it causes many issues for Windows users when they decide they want fmtlib of their own, or some other dep pulls it in. nlohmann doesnt seem to introduce these issues in the same way as it is purely header only.
- Change vscode properties for new container
Thank you for using D++!
v10.0.13 release
We are pleased to announce the release of D++ 10.0.13, which comes with some windows fixes for connectivity on this OS (windows did not seem to like our new connect implementation).
This version also adds fully tested large bot sharding for bots on over 150,000 guilds, supporting full concurrent connection to shards where needed.
If you are using windows for your bot, or require large bot sharding, it is recommended you upgrade.
The changelog is listed below:
Release Changelog
✨ New Features
- Add large bot sharding concurrency; improve shard connecting to not do a recursive call and to show number of shards remaining even when specifying manual nunmber of shards. always call /api/gateway/bot endpoint.
- Added check for id back in
attachment::download()
🐞 Bug Fixes
- Fix
delete_webhook_with_token
- Windows sucks - Fix for windows not connecting with new connect code
📚 Documentation
- Update outdated FAQ entries
- Move FAQ so it shows in left hand list more prominently
- Split up documentation into separate files to make it easier to navigate and maintain
📜 Miscellaneous Changes
- Updated cspell
- Updated docs
- Updated
component::download()
method
♻️ Refactoring
- Neater change
👷 Build/CI
- Ensure GCC 9 and 10 are also covered
Thank you for using D++!
v10.0.12 release
We are happy to announce the release of D++ 10.0.12! This version has a fix for delivery of API requests stopping at random on very large bots with very busy queues of requests. As part of this we have added a new feature, DNS caching, and some improvements to how we handle SSL_connect()
.
We have also added support for the new Discord feature app_permissions
on the interaction event, which provides a ready made bitmap of the bot's own permissions on the channel and guild where any slash command has been issued.
The changelog is listed below:
Release Changelog
✨ New Features
- Add
interaction::app_permissions
- discord/discord-api-docs#5131 - Add dns caching
🐞 Bug Fixes
- Max value for command option was broken
- Allow slash commands in dm, fixes #418
- Fix docs for dns cache
- This should not be exported to the Windows dll
- Windows breakage
- Don't throw new, we can't catch it
- Improve reliability of connections, handle
ssl_connect
dying andconnect()
hanging gracefully
📚 Documentation
- Can directly embed dot graphs into doxygen, with pan and zoom functionality. use
edotor.net
to build them interactively
♻️ Refactoring
- Move dns resolution to its own files
- Dns lookup and timeout tidyups
Thank you for using D++!
v10.0.11 release
We are happy to announce the release of D++ 10.0.11! The 10.0.11 is amongst the first libraries to support Discord's new Auto Moderation feature in full, with events and endpoints to manage the auto moderation from a D++ bot.
Alongside this are quality of life improvements for sending audio, and some changes to the kick command.
The changelog is listed below:
Release Changelog
✨ New Features
- Automod REST endpoints:
cluster::automod_rules_get()
,cluster::automod_rule_get()
,cluster::automod_rule_create()
,cluster::automod_rule_edit()
,cluster::automod_rule_delete()
,cluster::automod_rules_get_sync()
,cluster::automod_rule_get_sync()
,cluster::automod_rule_create_sync()
,cluster::automod_rule_edit_sync()
,cluster::automod_rule_delete_sync()
automod_rule_execute
- Auto moderation events
- Serialisation functions for automod structs
- Add parens
- Add os detection
- Added voice action bitflag for
guild_member
fixed #417 - Added note to
execute_webhook
- Added a voice client option to skip throttling for live audio data.
📚 Documentation
- Comments to document automod
💣 Breaking Changes
- Removed reason parameter from
cluster::guild_ban_add
method - Added
thread_name
parameter todpp::cluster::execute_webhook
🐞 Bug Fixes
- Add to cspell
- Dont run gg on pr
- Fix
cluster::guild_begin_prune
- UB (
__next_handle
)
♻️ Refactoring
- Deprecated
message::set_file_content
andmessage::set_filename
- Remove NOMINMAX definition
- Deprecated
cluster::guild_ban_add
with reason param. Added a similar method without this reason param. - Remove audit log reference under Modify Guild Channel Positions
📜 Miscellaneous Changes
- Update to new identify fields without $ prefix
- Updated docs of some events
- Updated how the url parameters are created in
guild_member.cpp
👷 Build/CI
- Add gitguardian
Thank you for using D++!
v10.0.10 release
We are happy to announce the release of D++ 10.0.10! This release further improves voice receiving, adds a new intuitive class around the permissions system so that you can for example call a .has()
method on it, and separates out the unit tests so that various tests can be run without the need for a token. There is also now functionality for sending webhooks with files.
This update is recommended if you make heavy use of the voice receive functionality, or just like the run the latest and greatest!
The changelog is listed below:
Release Changelog
🐞 Bug Fixes
- Fix duplicate includes
- Win32 builds with moved headers
- Docs typo
- Don't document deps
- Wrap-around for voice receive
- Fix double
API_PATH
and weirdness of operators - Fix
discord_voice_client
voice_payload
priority when two payloads have the same timestamp. - Add export
- Doxygen
- Fixed
dpp::permission
unit test - Ignore event
GUILD_APPLICATION_COMMAND_INDEX_UPDATE
♻️ Refactoring
- Move a bunch of socket headers inside the cpp files that use them rather than them being in the .h
- Change to using ctest to run tests, as this is more standardized
- Support multiple parameters to
permission::add()
,remove()
,set()
- Deprecated
guild_bulk_command_edit_permissions
📚 Documentation
- Ignore src directory
📜 Miscellaneous Changes
- Some common git ignores
- Updated sync methods
- Updated doc of
cluster::get_webhook_message
- Updated sync call methods
- Updated
dpp::permission
::has - Updated docs on
channel_edit_permissions
- Updated permission class
- Updated docs of the permission class
- Updated doc of
application_install_params
- Update title for better SEO
- Updated docs
💎 Style Changes
- Improve comments and PSR-12 style in the php files
💣 Breaking Changes
- Breaking change: updated webhook methods in cluster
✨ New Features
- Add template to only enable for int convertible types
- Add ctest to cspell
- Added missing include in
permissions.h
- Add back returning *this
- Added examples in the method docs of
dpp::permission
- Added
guild_member_remove_role
and deprecatedguild_member_delete_role
because it's just a confusing name - Added unit test for
dpp::permission
- Added three attributes (tags,
install_params
andcustom_install_url
) toapplication.h
- Add
lock_permissions
andparent_id
tocluster::channel_edit_positions
👷 Build/CI
- Unit test 'TS' is an online test
- Refactor unit tests to allow for offline tests and online tests. PRs will run offline tests. Offline means it doesnt need to talk to Discord with a valid API token, but could still do network/internet based things.
Thank you for using D++!
v10.0.9 release
We are pleased to announce the release of D++ 10.0.9! This new version further splits out events to give a separate on_slashcommand event, which can be used just to receive chat input
type interactions.
Thie release also fixes some deadlocks in the new voice receive code in certain situations, and Discord now support registration of global commands instantly, which means we can use global slash commands in most of our examples.
The changelog is listed below:
Release Changelog
✨ New Features
- Add
on_slashcommand
event that only receivesctxm_chat_input
- this has its own parameter type
👷 Build/CI
- Remove poor spelling checker on cron that makes prs
- Disable doker build and sitemap gen on forks
📜 Miscellaneous Changes
- Update
SECURITY.md
- Update
bug_report.md
📚 Documentation
- Make doxygen quieter
- Check more often for completed runners
- Some generator improvements
🐞 Bug Fixes
- Async docsgen
- Fix
discord_voice_client
hanging in destructor, again. - Fix potential hang in
discord_voice_client
destructor. - Fixed parsing bug in
application.cpp
and added url helpers in application
♻️ Refactoring
- Change command registration to global in more examples
Thank you for using D++!
v10.0.8 release
We are proud to announce that D++ 10.0.8 is now available! This release is packed to the brim with new features, fixes and improvements, at the forefront of these enhancements are:
- Receiving audio when multiple users are speaking is now stable thanks to an awesome patch from @kar8uncle
- Ability to receive combined audio for all users
- Ability to set audio gain on a per user basis for received audio, again thanks to @kar8uncle
- Support for Discord's new Auto Moderation feature
- Support for Slash Command permissions version 2
- Context menu application commands now have their own developer-friendly events rather than going through
on_interaction_create
- the old method still works too, so you aren't forced to change your bots if you dont want to or don't have the time to. - Full support for interaction followup messages
- New overloaded
event.reply()
method for interactions, which can be called with no parameters to acknowledge a button or select list without sending a message.
...and much more!
The changelog is listed below:
Release Changelog
✨ New Features
- Combined audio receive
- Add auditlog entry for command permissions v2
- Automoderation
- Give each thread a custom name to aid in debugging and live diagnostics
- New events
on_message_context_menu
/on_user_context_menu
, nicer ways of accessing context menu actions for slash commands. the old way of accessing this still works too. - Add "followup"
- Implement new calls:
interaction_followup_create
,interaction_followup_edit_original
,interaction_followup_delete
,interaction_followup_edit
,interaction_followup_get
; resolves issue #358 - Add
event.reply()
with no params (or just callback) to acknowledge button or select without a message
📜 Miscellaneous Changes
- Update
README.md
- Give voice courier a thread name
- Update .
cspell.json
- Updated comment in context menu example
- Update example for context menus to use new event
🐞 Bug Fixes
- Include combined event too
- Fix bug: use .contains instead of .at
- ARM6 builds without voice, meaning no
audio_mix
- HERP DERP win #define's min and max, breaking
std::max
- Fix missing
user_id
field invoice_receive_t
in case of lost packet. - Fix compiler warnings about virtual destructors.
- Useless cat (meow)
- Codacy style fixes
♻️ Refactoring
- Remove one instance of
HAVE_VOICE
in the header - Improve code readability around combined audio receive
- Improved context menu example & removed lowercase method in
slashcommand::set_name
- Remove Windows support for thread names and trim thread names to 15 chars plus null
- Remove extraneous quotes around guild member search query.
📚 Documentation
- Add gifv to cspell
- Remove pointless line
- Some docs improvement
- Tidyup docs
💎 Style Changes
- Codacy changes
Thank you for using D++!
v10.0.7 release
We are pleased to announce the release of D++ 10.0.7! This new release provides support for the new slash command permission system, support for localization, and removes support for the older default_permission
boolean flag.
Several fixes have been also been made for voice and for synchronous HTTP functions.
The changelog is listed below:
Release Changelog
🐞 Bug Fixes
- This should be safe for a guild command
- DELETE with content-type causes confusion for Discord API, fixes #356 reported by Paket236
- Fix my dumbness
- Fix segmentation fault on interaction sync functions
- Slash command dm permission not set when false, to make sure it isn't sent with a guild command
- Fix double-free of SSL client through
dpp::voiceconn
when disconnecting from a voice channel. - Fix properly unsetting deaf and mute
- Fix ub
- Filter out
GUILD_JOIN_REQUEST_UPDATE
- Put back
__next_handle
, oops - Fix for issue #357
- Flip around the names of the functions
- Fix issue on Windows
💣 Breaking Changes
default_permission
has been removed from slashcommandmessage_update
now has the same style of signature asmessage_create
, no pointer, and object called msg. This is to allow for a template to work on both
👷 Build/CI
- Unit test for command translations
✨ New Features
- Add translations, add new command permissions
📜 Miscellaneous Changes
- Update issue templates
♻️ Refactoring
- Remove unused using line
- Remove check for emptiness of a vector in '
guild_bulk_command_create
' - Remove check for emptiness of the vector
- One
ssl_ctx
per thread, cuts down on memory and speeds up connection
📚 Documentation
- Move utterances down
- Add
utteranc.es
- Add
utteranc.es
to all pages - Fix doxygen comment
Thank you for using D++!
v10.0.6 release
We are pleased to announce the release of D++ 10.0.6! The 10.0.6 release adds a new feature to help speed up REST requests made to Discord whilst still staying in line with rate limits. Where requests fall into different rate limit buckets, they will be parallelised by D++ and run alongside each other. By default, up to 8 buckets can be ran in parallel, you may increase this value either with a parameter to the dpp::cluster
constructor, or at runtime using for example bot.get_rest()->add_request_threads(8)
which would add a further 8 threads to the pool. Note that you cannot decrease the number of threads at runtime without deleting the dpp::cluster
and constructing a new one.
The changelog is listed below:
Release Changelog
♻️ Refactoring
- Some QoL tweaks, additional methods for iconhash etc
- Improve speed of HTTP requests by parallelising requests, while ensuring that requests for the same rate bucket end up on the same thread in the pool at all times, which prevents rate limits from breaking. Update thread model chart. Note that completed requests are still delivered to the same single thread so that user's programs do not get broken by any assumptions they made about threading model
- Tidy up channel flags, pack into smaller type, add unit tests for channel cache/types
- Remove these from dev
- Remove modernize so it can just check var names
🐞 Bug Fixes
- Windows exceptions
- Fix spelling error
- Fixed "this" could be invalid when callback was called on
post_rest
becauseinteraction_create_t
is not valid after an interaction event returns
✨ New Features
- Throw
dpp::invalid_token_exception
when bad token given atcluster::start
- derived fromdpp::rest_exception
so not a breaking change - Allow users to specify number of threads for requests and even scale up at runtime
- 'forum' channels (name subject to change)
- Add
set_channel_id
andset_guild_id
to message
📚 Documentation
- Bump doxygen-awesome-css to v2.0.3
- Add deprecation notice for group-dms
👷 Build/CI
- Compile time improvements
Thank you for using D++!