Skip to content

Releases: brainboxdotcc/DPP

v10.0.20 release

29 Sep 18:13

Choose a tag to compare

We are happy to announce the 10.0.20 release of D++, after a short delay due to some hardware issues. This new version of D++ features support for Discord's new Forum channels, a raft of fixes and some optimisations. If you want to keep up to date with the latest Discord features we encourage you to upgrade.

The changelog is listed below:

Release Changelog

✨ New Features

  • Added missing message flag: message_flags::m_thread_mention_failed
  • Added missing message flag: message_flags::m_failed_to_mention_some_roles_in_thread
  • Add markdown logo
  • Added guild flag dpp::g_invites_disabled
  • Added connection::two_way_link field
  • Added audit_extra::automod_rule_name and audit_extra::automod_rule_trigger_type fields & two missing audit types
  • Added unverified bots default intent. (#500)

💣 Breaking Changes

  • Removed channel::banner field
  • Message flags are now stored as uint16_t instead of uint8_t
  • Changed the type of guild::afk_timeout to enum dpp::guild_afk_timeout_t and guild::max_video_channel_users down to uint8_t
  • Changed the type of guild::afk_timeout up to uint16_t and guild::max_video_channel_users down to uint8_t

🐞 Bug Fixes

  • Fix date/time trim on Windows
  • Fix hash in vcpkg
  • Fix weird port version in master
  • Fix portfile generation
  • Guild flag dpp::g_featureable wasn't parsed correctly
  • Rename attach() overload to co_attach()
  • Add dummy_container to event_router_t to retain struct size
  • Fix firstbot page tables, and improve utterances somewhat
  • Fixed double slash comment to triple

🚨 Testing

  • Added unit tests for forum channel creation

📚 Documentation

  • Improve readme
  • Updated clion tutorial (#514)
  • Fixed whoopsy in an example program (#513)
  • Moved raspberry pi to its own section
  • Updated some fields and methods
  • Updated docs of dpp::interaction_response_type
  • Updated docs of dpp::command_value
  • Updated startpage
  • Docs (#503)

♻️ Refactoring

  • Default event_router_t constructor

📜 Miscellaneous Changes

  • Updated forums
  • Updated changelog builder (#509)
  • Update README.md

Thank you for using D++!

v10.0.19 release

10 Sep 10:30

Choose a tag to compare

Due to discord changing the format of the websocket URLs for resuming connections, we released version 10.0.19 to fix the issue. This fix is critical for operation, you should update to it as soon as possible if you are on version later than 10.0.16.

The changelog is listed below:

Release Changelog

🐞 Bug Fixes

  • Adjust wording
  • Fix Discord moment
  • Fix uninitialized warnings fields in dpp.h (#498)

📜 Miscellaneous Changes

  • Updated docs of guild::permission_overwrites and channel::get_user_permissions (#499)
  • Update soak.cpp

♻️ Refactoring

  • Change the test builder so that it can build multiple executables based on folder name

Thank you for using D++!

v10.0.18 release

03 Sep 20:12

Choose a tag to compare

This 10.0.18 release is a critical fix for a reconnect and resume issue in 10.0.17. If you are using 10.0.17 and have been having issues with sessions not resuming correctly, you are urged to upgrade to this version ASAP.

Also in this version are fixes to ensure that the deb and rpm files are correctly built with libssl 3.x on x64 and x86.

The changelog is listed below:

Release Changelog

🐞 Bug Fixes

  • Fix broken reconnect request

📜 Miscellaneous Changes

  • Update ci.yml
  • Update ARM64ToolChain.cmake
  • Update LINUXx86ToolChain.cmake

✨ New Features

  • Add getter for slashcommand mentions (#492)
  • Add getter for slashcommand mentions

Thank you for using D++!

v10.0.17 release

31 Aug 16:18

Choose a tag to compare

We are happy to announce the release of D++ 10.0.17!

This new release adds support for Discord's most recent changes, such as message deletion when banning a user now being in seconds instead of days. From a technical perspective this release changes dpp::snowflake from a simple typedef to a class with methods. This lets you for example call get_creation_time() on a snowflake, and prevents dumb mistakes like trying to store snowflakes into int or into signed values. It comes fully equipped with operators to make it behave like a uint64_t when being used correctly, so this should not break well written code.

Our binary packages are now built on g++ 10 under the Ubuntu 22.04 LTS for 64 bit builds, which means they are linked against the SSL 3.x libraries instead of 1.1.

Yet again, there are performance improvements, mainly in the ETF parser, and also in our socket multiplexing code which means those of you with truly huge bots will notice the most performance improvement.

The changelog is listed below:

Release Changelog

💣 Breaking Changes

  • Delete message count on cluster::guild_ban_add is now scaled in seconds instead of days (#489)
  • Rename "news" channel to announcement channel (#488)

✨ New Features

  • Add support to build rc file to .res from Harshfuedal's template, only if we are on MSVC and building as dynamic lib
  • Added a fluent function for setting the default gateway address. (#487)
  • Added constructor for dpp::automod_metadata
  • Added apf_application_command_badge to application flags
  • Added attachment::description attribute (#482)
  • Added attachment::description attribute
  • Operators for comparing role positions
  • Shorthand methods for making subcommands and options easier
  • New methods in dpp::interaction to make for easier use
  • Add DPP_CORO
  • Add operator==(uint64_t)
  • Snowflake class. Please TEST THIS with some bots

♻️ Refactoring

  • Warn if user tries to delete someones messages for the last 7 seconds, they likely didnt check for breaking changes and were thinking it was in days
  • cluster::request() now supports coroutines (#491)
  • Warning fixes for msvc
  • cluster::request() now supports coroutines
  • Use poll not select for ssl_client - Needs Windows testing
  • Performance improvements in etf parser
  • Changed dpp::snowflake in subcommands docs to uint64_t and removed extra brackets
  • Remove newlines

🐞 Bug Fixes

  • Pollin/pollout required on Linux
  • Make poll() work on Windows
  • role::get_mention not working
  • Fix check for snowflake also munching up ints
  • Fix about the sussy thing
  • Fixed AppleSilicon check (#478)
  • Fixed AppleSilicon check
  • Large bot sharding multi-connect spams console with connect message
  • Gcc 8.3 fails, 8.4+ passes. ugh.
  • Ugh left one out
  • Fix interaction_create in many compilers
  • Fix small issue in guild::build_json() (#475)
  • Fix guild build_json afk_timeout field addition depends on another field's validity
  • Fixed subcommand docs (#473)
  • Fix slash commands in dm and tidy up .find/.at to .contains in some places
  • Coroutine support for g++ 10 and msvc
  • Experimental coro generator
  • Get rid of these weird extra checks
  • Backport some changes that were made when getting this live

👷 Build/CI

  • Improvements to changelog builder
  • Try moving cross-compiles to ubuntu-latest
  • Move packaging to ubuntu-latest g++-10 instead of debian g++-8, to link to ssl 3 instead

📜 Miscellaneous Changes

  • Updated automod (#483)
  • Update cluster.cpp
  • Updated automod docs
  • Updated docs in automod
  • Updated automod
  • Update construct-vcpkg-info.yml

📚 Documentation

  • Document coro.h (#471)
  • Document coro.h
  • Placeholders for coro docs

Thank you for using D++!

v10.0.16 release

15 Aug 12:43

Choose a tag to compare

We are happy to announce the release of D++ 10.0.16! This new version adds support for Discord's new session specific gateway resume feature, so it is strongly recommended to update to this version so you don't have issues with reconnection/resuming sessions.

There is also a performance improvement making ETF 60% faster. Enjoy! 🚀

We have also added experimental support for coroutines, to enable this add the DPP_CORO cmake flag during the compilation and cmake process.

The changelog is listed below:

Release Changelog

♻️ Refactoring

  • Improved autogenerator, uses class autoloading to cut down on copy paste
  • Convenience function dpp::confirmation_callback_t::get<T>()
  • Split cluster.h
  • Check the script time for regen
  • Change to , modern PHP
  • Search and replace json_fwd->json in cpp implementation files

✨ New Features

🐞 Bug Fixes

  • More robust requesting for non-Discord calls
  • Add CORO and cback to spellcheck
  • Missing includes
  • Remove unnecessary includes
  • Proper includes for sync.h
  • Missing virtual destructors
  • Didnt save
  • pthread_setname_np on osx
  • Fix pthread_setname_np, seems to be used mainly by pthreads on Windows mingw64
  • Target branch
  • Squash some msvc warnings
  • Fix this to properly detect msvc

📜 Miscellaneous Changes

  • Update doxygen
  • Updated notes on voice connection methods
  • Chmod -x on source files
  • Update guild.h
  • Updated - as DiscordCoreAPI has ETF.

👷 Build/CI

  • Display install locations
  • Fix dlcount, fix compile error on gcc12
  • Better detection of pthread_setname_np variants
  • Target dev
  • Add checks for docker

📚 Documentation

  • Rewrite this and make our own
  • Resize animated gif used on the threads/lambdas page saving 60%
  • Add xmake install instructions
  • Spelling fix [skip ci]
  • New installation docs for package managers
  • Add custom downloads badge

Thank you for using D++!

v10.0.15 release

25 Jul 12:11

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

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

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

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

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++!