Skip to content

Releases: brainboxdotcc/DPP

v10.0.15 release

25 Jul 12:11
Compare
Choose a tag to compare

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 the guild_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 removing fmt::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

20 Jul 17:06
Compare
Choose a tag to compare

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 call start() 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

11 Jul 16:45
Compare
Choose a tag to compare

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

30 Jun 00:07
Compare
Choose a tag to compare

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

🐞 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 and connect() 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

24 Jun 08:31
e9c4ed7
Compare
Choose a tag to compare

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 to dpp::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 and message::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

02 Jun 09:01
Compare
Choose a tag to compare

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 deprecated guild_member_delete_role because it's just a confusing name
  • Added unit test for dpp::permission
  • Added three attributes (tags, install_params and custom_install_url) to application.h
  • Add lock_permissions and parent_id to cluster::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

18 May 22:20
Compare
Choose a tag to compare

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 receives ctxm_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

13 May 23:00
15fbf39
Compare
Choose a tag to compare

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 in voice_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

01 May 13:54
Compare
Choose a tag to compare

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 slashcommand
  • message_update now has the same style of signature as message_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

12 Apr 23:28
Compare
Choose a tag to compare

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 because interaction_create_t is not valid after an interaction event returns

✨ New Features

  • Throw dpp::invalid_token_exception when bad token given at cluster::start - derived from dpp::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 and set_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++!