Skip to content

Releases: brainboxdotcc/DPP

v10.1.0 release

15 Feb 14:51
2455845
Compare
Choose a tag to compare

D++ 10.1: Faster, Smarter, and Coroutine-Powered 🚀

D++ 10.1 is here, and it's bringing some serious upgrades to your Discord bot development experience. Coroutines are now the default, making asynchronous programming smoother and more modern. If you're not ready to dive into coroutines just yet, you can still disable them with -DDPP_NO_CORO=ON. The threading model has been completely overhauled with a reactor pattern and central thread pool, boosting performance across the board. There’s also a brand-new socket engine that intelligently picks the best available method (epoll, kqueue, or poll) based on your OS, improving efficiency for high-throughput bots.

Beyond the under-the-hood improvements, you’ll find new coroutine-powered helper functions for message handling (co_send, co_reply), expanded event data like user_id on reactions, and a new constructor for dpp::cluster for lightweight webhook-based applications. Tons of bugs have been squashed, from lingering memory leaks to connection retries, ensuring a more stable experience. If you're still using the old _sync functions, now’s the time to migrate—those are officially gone. Whether you’re running a small community bot or a high-scale application, this release makes D++ more powerful, efficient, and developer-friendly. Upgrade today and enjoy a faster, cleaner codebase! 🚀

The changelog is listed below:

Release Changelog

💣 Breaking Changes

  • Coroutines are now default enabled. To disable them and only use C++17 features, use -DDPP_NO_CORO=ON cmake flag (#1368)
  • Updated dpp::role comparison operators to now consider role IDs (#1333)
  • Change event_dispatch_t::from member variable to event_dispatch_t::from() method
  • New threading model, using the reactor pattern and a central thread pool.
  • Support for "socket engines", which are reactors containing support for epoll, kqueue or poll depending on what your OS supports.
  • dpp::timer now internally uses a std::priority_queue and is much more efficient especially with large (hundreds, thousands) numbers of active timers
  • dpp::sync and _sync function are removed. They have been marked deprecated for two years now. You should migrate to coroutines instead.

✨ New Features

  • Added user_id to message_reaction_add_t (#1376)
  • Add coroutine support functions to message_create_t (co_send, co_reply) (#1357)
  • Socket engine stats functions (#1353)
  • dpp::cluster now has a constructor with no parameters, which can be used when using the cluster purely for its reactor, e.g. for a purely webhook based application

🐞 Bug Fixes

  • Detect c++17 to define DPP_NO_CORO at the point of usage (#1378)
  • Fix C4245 warning on MSVC (#1367)
  • Make sure write events go out as soon as they can (#1354)
  • Large https request body could not be sent (#1352)
  • Thread safety for event objects (10.1 only) (#1350)
  • Coro timers ez pz lemon squeezy (#1351)
  • Make new constructor for cluster explicit
  • Docs: update documentation examples to use event.from() and event.owner
  • unique_ptr on g++-8 needs to know sizeof() z_stream up front, so we must use a raw ptr 😦
  • Immediately delete fds that want deletion after we are done firing their events rather than prune() loop fix: replace fds that already exist in the set. emplace would fail.
  • Don't store the event ptrs in the kevent/epoll udata, this can end up with dangling ptrs in events
  • Ensure heirarchy correctly calls the various inherited functions. todo: refactor this mess
  • Fix for runaway cpu usage due to connect() retry
  • Fix fd and memory leak in httpsclient
  • Fix reconnection of shards by creating new shards on reconnect, with a management timer to handle reconnections to stop reconnect storms
  • Https request queues still need a removals queue, it can be simplified but needs to still exist, there is a chicken-and-egg situation with the pointer for the request
  • Segfault when calling read on an invalid fd
  • Prevent concurrent on_disconnect()
  • Fix BUILD_VOICE_SUPPORT=OFF static build (#1338)
  • Fixes for poll on Windows
  • Fixes for cluster destructor on FreeBSD
  • Fix kqueue to actually work on FreeBSD
  • Add auto retry to failed connect, fixes failed unit tests
  • Fix http(s) requests with 0 content length timing out
  • Fix role edit/role delete unit tests
  • dl.dpp.dev was not downloading rpms any more (#1335)
  • Fix some httpsclient stuff
  • Fix namespace include in cmakelists for mlspp, backport of mls++ fix (#1331)
  • Two segmentation faults in cluster::guild_edit_member and cluster::tick_timers/cluster::shutdown (#1326)
  • FreeBSD port build issues (#1325)
  • Fix/sslclient-spinlock (#1339)
  • Fix/voice socketengine (#1337)

♻ Refactoring

  • Remove some deprecated and unused fields
  • Remove sync.h
  • Remove dpp::sync
  • Remove raw pointers from dns code
  • Make overridden sslclient stuff have override keyword, tidy up zlib stuff
  • Eliminate raw pointers from timer code
  • Magic numbers in discordclient
  • Remove thread pool from request queue, run it off dpp::timer instances instead
  • Remove nonblocking bool, as all sockets are always now nonblocking
  • Remove dpp::sync from unit tests, we no longer test it
  • Remove jthread, C++20 only

📚 Documentation

  • Fix codacy badge (#1375)
  • Missing comment blocks
  • New webhook example
  • Document various new functions
  • Redo thread model dot
  • Updated checking-permissions page and a view functions (#1336)
  • Document socket_engine_base

📜 Miscellaneous Changes

  • Tweaks and fixes to scripts and docs to support 10.1 (#1365)
  • Don't always run php for DPP_CORO (#1363)
  • Make event.from safe in threads
  • Fix; when putting events into the thread pool work queue, we must take a copy of the cluster ptr, as the client ptr may be invalid by the time the event is triggered (shards now get reallocated)
  • Split out zlib stuff to its own file
  • Move some things into constexpr constants
  • Tidy up casting in decompression code
  • Call on_disconnect in more situations so we can properly handle dead sockets
  • adjust version to 10.1
  • Catch exceptions on reconnect
  • Voice session reconnect
  • Tidy up shard startup
  • Audio works if user joins 2nd
  • Audio isn't being heard, dont know why yet
  • warning fixes
  • Improve threading
  • Properly mutex everything
  • we dont need to check for epoll removal failure, if it fails its already not in the set
  • Destroy thread for socket loop before trying to destroy anything that may be within it
  • Dont resize the ke_list
  • Mutexing of timer list
  • Safety check handlers
  • Sanity checks
  • Errors were missing part of the url
  • Some unit tests improvements
  • Always populate even on timeout
  • Dont let request_verb go out of scope
  • sleep() shouldnt be used, instead use std::this_thread::sleep_for(std::chrono::seconds(6))
  • terminating.notify_all is C++20
  • Unit test no longer runs forever
  • Make poll ctor not protected
  • Put websocket events into the work queue
  • no longer any need for out_queue -> goes into the main thread pool
  • https client/queues migration to socketengine
  • Socket engine basics

👷 Build/CI

  • OSX now only tests on clang15 (#1345)
  • Macos version will now always be 15
  • Removed pkg-config from brew as no longer needed
  • Force pkgconf unlink for brew

v10.0.35 release

03 Nov 00:09
ab0142b
Compare
Choose a tag to compare

We are happy to announce the release of D++ 10.0.35, which is mainly a bugfix release. It will fix a crash that may sometimes happen after registering a slash command. There are also a couple of fixes for compilation on void linux, and ARM NEON support for voice receive is now fixed.

Release Changelog

🐞 Bug Fixes

  • Missing ctime in sslclient.h breaks on void Linux (#1314)
  • Neon now compiles (#1313)
  • Commands should no longer crash when no context is defined (#1312)

📚 Documentation

  • Install with conan doc pages (#1070)
  • Conan badge (#1311)

📜 Miscellaneous Changes

  • Sync with version from conan-center. this here for reference only. do not install via this conanfile.py

Thank you for using D++!

v10.0.34 release

27 Oct 12:02
b5ae650
Compare
Choose a tag to compare

We are proud to announce the release of D++ 10.0.34! This new release of D++ adds support for user apps, which is a new Discord feature which allows you to add a bot to a user's profile (rather than a guild) so that commands listed by the bot can be ran anywhere (including in DMs and group DMs).

We have also added some supporting infrastructure to allow us to add to Conan Centre, so you will hopefully see D++ on Conan very soon!

The changelog is listed below:

Release Changelog

✨ New Features

  • Conan 2.x recipe (#1308)
  • Add support for user apps (#1304)
  • User app commands and test program
  • Add interaction_metadata for messages
  • Add authorizing_integration_owners
  • Add support for application_integration_types
  • Add interaction_context_type support

🐞 Bug Fixes

  • Fix weird comments
  • Deprecate old fields

♻️ Refactoring

  • Dont use strings and uint64_t in dave, use snowflake type (#1307)
  • Change to register_command

📚 Documentation

  • Add documentation page for creating user app commands! (#1305)

📜 Miscellaneous Changes

  • Fix/dave segfault (#1306)
  • User-installed commands (#1223)
  • Change docker schedule to monthly, not daily

Thank you for using D++!

v10.0.33 release

20 Oct 21:38
d70cef2
Compare
Choose a tag to compare

We are proud to announce the release of D++ 10.0.33! Barely a week after our last release, we have many more features to bring to you, and some fixes relating to DAVE E2EE. When users join a DAVE voice channel, the encryption will now remain as end-to-end and not downgrade to standard. The on_voice_ready event will also now always fire after a timeout when DAVE is enabled, even if there are no other users in the VC to build an MLS group with.

We have also added the approximate_user_install_count field to dpp::application and added cluster functions to fetch a users voice state via API calls (regardless of gateway, or cache).

Please note that this release officially deprecates _sync functions. They will still operate, but will emit a warning at compile time if used. Instead of sync functions, if you are still using them, you should consider migrating to coroutines instead. CircleCI is now also officially removed from our build process, as this had been in place before we had GitHub actions and is no longer relevant.

The changelog is listed below:

Release Changelog

✨ New Features

  • Added endpoints to fetch a user's voice state (#1294)
  • Added approximate_user_install_count field to application (#1293)
  • Added NOMINMAX to CMakeLists.txt (#1292)
  • Voice ready now fires even if there are no other users in the VC (#1289)

🐞 Bug Fixes

  • Fix broken static builds (#1290)
  • Fix broken vcpkg builds which were failing because they were trying to compile as static (#1287)
  • DAVE! client join/part re-derive client ratchets and privacy code (#1264)
  • Vcpkg is always built with voice (#1272)

♻️ Refactoring

  • Cleanup namespaces and unneeded includes (#1295)
  • Libdave camel massacre 🐪🔪 (#1285)
  • Low level socket tidyups and removal of punning (#1282)
  • Breaking: Deprecate sync calls (#1280)

📚 Documentation

  • Add docblock comments to all libdave class variables (#1286)
  • Update roadmap (#1279)
  • Extend Coroutine Documentation (#1288)

💎 Style Changes

  • Clang-format file, for discussion (#1277)

📜 Miscellaneous Changes

  • Delete .circleci directory

Thank you for using D++!

v10.0.32 release

12 Oct 14:05
a1a32d2
Compare
Choose a tag to compare

We are extremely happy to announce the release of D++ 10.0.32! This new release is (to our knowledge) the first released Discord library to feature Discord's new DAVE end-to-end encryption for voice channels.

Please note that DAVE is experimental at present, and can be enabled by passing true to a boolean parameter when connecting to a voice channel. Please report any bugs, and we strongly welcome PRs. Now is your time to get involved with D++ development!

We have also removed the dependency upon libsodium for voice support. Instead, we use OpenSSL primitives for the same features, allowing us to remove a huge dependency from the library.

This new release officially bumps the audio protocol to version 8, so this is required if you wish to continue using voice with D++ past November, as Discord are enforcing Voice protocol version 8 from this date onwards.

We also have added support for named slashcommand handlers, so routing of commands to different functions based on the name of the command can be done automatically for you by the library. Check out documentation on register_command and unregister_command for more information!

The changelog is listed below:

Release Changelog

✨ New Features

  • Discord DAVE Protocol (E2EE) for voice (#1258)
  • Message forwarding (#1247)

🐞 Bug Fixes

  • Crash in threads_get_public_archived (#1268)

♻ Refactoring

  • Remove unused debug variable (#1266)
  • Why you so salty? Entirely remove libsodium from D++ (#1265)
  • Deprecation: officially deprecate commandhandler (#1263)
  • Better registration with try_emplace

📚 Documentation

  • Prevent "The Windows 7 Incident" (#1267)
  • Remove coroutine/DPP_CORO experimental warnings (#1221)

📜 Miscellaneous Changes

  • Implementing named commands handlers for the cluster (#1262)
  • This cant be fatal while we are offering documents on deprecated stuff for SEO
  • Officially deprecate commandhandler
  • Fix embeds.cpp not required intent + add cout logger (#1250)

👷 Build/CI

  • More secure llvm19 install process (#1246)

Thank you for using D++!

v10.0.31 release

21 Sep 21:14
ce18453
Compare
Choose a tag to compare

We are happy to announce the release of D++ 10.0.31! This new version is a required upgrade if you use Discord Monetization, or voice/audio. Discord have changed the requirements for encryption of voice, so this new version adds support for XChaCha20 voice encryption via sodium, and also adds the new monetization API calls. These have been tested for quite some time in production bots and can be considered as stable and ready for general availability.

This fix also contains several new features such as support for application emojis, customisable HTTP timeout durations, and a new coroutines implementation which fixes some long standing UB and minor memory leaks if you were using coroutines. If your bot does use coroutines, this is a strongly recommended upgrade which will increase performance and stability for your bots.

The changelog is listed below:

Release Changelog

✨ New Features

  • Change encryption to AEAD XChaCha20 Poly1305 (#1239)
  • XChaCha20 voice encryption (#1242)
  • std::format support for dpp::snowflake (#1203)
  • Added support for application emojis (#1207)
  • Timeout is now 20 seconds. Users can now change the timeout length (#1208)
  • Added file size limit to avatars and banners (#1209)
  • Coro: coro 2.0 (#1196)
  • Banners can now be uploaded to bots (#1197)
  • Add XBPS docs (#1192)
  • Add request_timeout, a parameter as optional to cluster::request() which allows user to set http_client::timeout and add error message for request timeouts (#1186)
  • Added warnings for certain events that require an intent (#1169)
  • New premium upsell button style (#1175)
  • Add missing entitlement type enum values (#1171)
  • Added consuming an entitlement (#1170)
  • Add result_type member type to dpp::task (#1165)

🐞 Bug Fixes

  • Added missing include to awaitable.h (#1243)
  • Improve compatiblity with socket (#1229)
  • Fix requests fizzling if the response doesn't contain Content-Length (#1232)
  • Fix guild_member::get_avatar_url() (#1230) (#1231)
  • Incorrect comment (#1228)
  • Coro: fix awaitable/task move assignment, again
  • Coro: fix dpp::task's move assignment
  • Coro: fix unused alias warning
  • Coro: fix read-after-free in dpp::async
  • Coro: fix includes, improve NOMINMAX define
  • Qol: shut up soundboard events (#1202)
  • Fixed padding in tests
  • Add and to misc-enum.h
  • Test: fix ban unit tests to be dependent upon each other (#1200)
  • Removed max limit for avatars and banners
  • Banner blob now correctly throws for banner blob size. coro and sync calls updated
  • Unit tests are now built statically when BUILD_SHARED_LIBS is off (#1193)
  • Compilation on clang-19 (#1195)
  • Add packets_left count (#1194)
  • Fix leak of in_thread, fix read-after-free, fix race condition UB after cluster shutdown (#1187)
  • Add error message for request timeouts and add timed_out member variable to https_client to check for request timeouts

♻️ Refactoring

  • Readability changes to sslclient and wsclient (#1210)
  • Changed DPP_BUFSIZE to be uint16_t instead of uint32_t
  • Removed un-needed includes, more indentation corrections
  • Removed constexpr for http_version, moved send to std::string_view, removed spaces
  • Change get_gateway_bot to use coro when available
  • Remove Cmake special options to compile on clang-19
  • Coro: coro tidy up, add sync_wait

🚨 Testing

  • Test to_binary()

📚 Documentation

  • Change init to create (#1220)
  • Fix unnecessary include of fmt in mp3 example (#1218)
  • Create Gentoo installation tutorial (#1211)
  • Remove XBPS coroutine section (#1205)
  • Added a page for editing messages from a button click (#1163)
  • Altered minimum gcc version for Coro, fixed docs issues (#1173)
  • Added a missing ref (#1179)
  • Changed wording of token page (#1161)
  • set_allow_multiselect is now correctly documented
  • Added an example on how to edit an embed (#1128)

💎 Style Changes

  • Static and reinterpret casts

📜 Miscellaneous Changes

  • Adding fix to arm-neon bug. (#1226)
  • Adding Arm-Neon implementation. (#1225)
  • Introduced DPP_HAS_FORMAT definition
  • std::format support for dpp::snowflake
  • Add requires clause to await_transform to improve error messages when trying to co_await something that can't be
  • Coro test case to detect leaks
  • Coro: allow move-only types in dpp::async, de-duplicate void specializations where possible, document some more
  • Coro: add concept awaitable_type, move dpp::detail::promise::promise to dpp::basic_promise, document some more
  • Coro: remove long-deprecated dpp::job event handlers
  • Coro: add [[nodiscard]] to dpp::task, dpp::coroutine
  • Coro: use std::memory_order
  • Updated libsodium version for rpm packages to latest (#1190)
  • Use string_view for message object ctors + setters (#1178)
  • Big number implementation, for future use in permissions bitfields (#1176)
  • Mark interaction type 10 as depreciated
  • Add Missing SKU types
  • Update Docker image to Ubuntu 24.04 LTS (#1168)
  • QoL fix: Enhance the entitlement stuff with data from the actual api docs now there are some (#1166)
  • Poll conflicting with dpp::poll (#1152)
  • Updated autocomplete tutorial (#1151)

👷 Build/CI

  • Add clang-19-libc++ as manual install (#1245)
  • Fix mac xcode version (#1244)
  • Added clang16-18 jobs for Linux, added clang16 for OSX (#1206)
  • Fixed clang16 for OSX
  • Added clang16-18 runners for Linux, added clang16 for OSX
  • Added a clang++15 osx job, fixed clang++14 job. (#1204)
  • Adds support for g++13 and g++14 CI on Ubuntu 24.04 (#1201)
  • Allow runners to use mold, increased concurrency to 4 (#1198)
  • Codeql now uses -j4
  • Updated cmake commands for Linux to be more modern
  • Arm7hf no longer uses mold
  • Allow runners to use mold, increased concurrency to 3

Thank you for using D++!

v10.0.30 release

10 May 22:34
fa5d7d5
Compare
Choose a tag to compare

After several months of development, we are happy to announce the release of D++ 10.0.30, with support for polls, voice channel statuses, improved error logging, better UTF-8 functionality, and the ability to supress embeds on other users messages.

We recommend you update to this version for the fixes here, and for the new features to keep current with Discord's feature set.

The changelog is listed below:

Release Changelog

✨ New Features

  • Poll support (#1136)
  • Added is_guild_owner for dpp::guild_member (#1109)
  • Add embed-only message ctor (#1100)
  • Added change_voice_channel to discordclient (#1083)
  • Alter set_allowed_mentions (#1081)
  • Added expire and issued timestamps in attachment (#1065)
  • Added newly_created bool to threads (#1069)
  • Added dpp::cluster::guild_member_timeout_remove and its sync/coro versions (#1067)
  • Added the ability to set voice channel statuses (#1064)

🐞 Bug Fixes

  • Error in logging with malformed json that doesnt fit the structure for an error (#1126)
  • Signal Handlers on Non-Windows Platforms in sslclient (#1123)
  • Fix uncleared track meta on stop audio (#1127)
  • Fix human_readable for good (#1135)
  • Empty presences will now warn (#1121)
  • Fix memory leak on libstdc++ (#1112)
  • Out-of-bounds read of MIME types (#1104)
  • Get size of object instead of pointer
  • Correct wrong linking order to fix static build (#1102)
  • Add version parameter as optional parameter to co_request, has been part of request for some time
  • Add version parameter to co_request
  • ts_not_null now works for all timezones (#1089)
  • Fixed getting archived threads
  • Fix bug in human readable errors (#1077)
  • Default callback parameters (#1079)
  • It's going to be OK (#1078)
  • Send stickers in message if present
  • Cmyk calculations - blue value calculations (#1053)
  • Remove unnecessary SSL_free (#1050)
  • Properly free ssl session and ssl context (#1049)
  • Avoid memory leaks in event_map (#1043)
  • Use of uninitialized value in command_option copy ctor (#1044)

♻️ Refactoring

  • Fix and improve utf8 utilities (#1046)

📚 Documentation

  • Added a timers page, added a note in setting_status for timers (#1120)
  • Rewrote the CLion VCPKG page to use VS toolchain (#1111)
  • Fixed missing/incorrect params for many functions (#1110)
  • Added a thinking page (#1092)
  • Update Xcode page. (#1061)
  • Improve Windows VS tutorials (#1058)
  • Added the homebrew version to readme (#1041)

📜 Miscellaneous Changes

  • Silence GUILD_SOUNDBOARD_* websocket events, currently undocumented (#1148)
  • QOL: non fatal utf8 handling. (#1147)
  • Capturing "bot" is not needed. Removing it resolves an unused variabl… (#1132)
  • Ability to suppress embeds (#1107)
  • Dont attempt to reschedule timers that are deleted (FIXES: #1048) (#1088)
  • Potential uninitialised value returned if empty string passed to from_string<T>() (#1087)
  • Unit-test and non unit-test jobs are now merged into one (#1051)

👷 Build/CI

  • Mac runner removal (#1144)
  • Labeler no longer fails (#1068)

Thank you for using D++!

v10.0.29 release

11 Dec 17:05
e52ed92
Compare
Choose a tag to compare

We are pleased to announce the release of D++ v10.0.29! This release contains many fixes, and also introduces coroutines to the windows bot template, so you can use templates out of the box on windows bots. We also now have full support on Brew on MacOS plus a MacOS bot template ready to use in XCode.

The changelog is listed below:

Release Changelog

✨ New Features

  • Made iteration_interval changeable. (#1040)
  • Added guilds array and count to ready_t (#1038)
  • Coroutines on the Windows Bot Template
  • A new OSX Template
  • Official clang-cl support
  • Add clang-cl CMake presets
  • Add error codes to exceptions (#1036)

🐞 Bug Fixes

  • Remove msvc-only /await:strict from clang-cl flags
  • Remove DPP_EXPORT on json_interface.h
  • Corrected some comments
  • Added fixes for clang-cl
  • Changed default audio type for Windows (#1004)
  • Fixed unittest for mac, ctest now works (#1001)
  • Voiceregion now fills correctly, removed VIP from regions. (#997)

♻️ Refactoring

  • Split dpp::thread from channel.h into thread.h
  • Changed the way messages holds files (#999)

📚 Documentation

  • Made the setting_status page use the latest ready_t feature (#1039)
  • Added emoji page (#1019)
  • Added an xcode page for osx (#1030)
  • Fixed colour scheme after recent doxygen changes (#1023)
  • Added install page for brew (#1006)
  • Improved some sections for docs-style-standards (#1018)
  • Added a docs convention (#1014)
  • Corrected some issues in clearing_slashcommands.cpp (#1012)
  • Corrected punctuation and refs (#1002)
  • Altered the OSX page (#1000)

💎 Style Changes

  • Corrected some left over style issues. (#998)
  • The final comments refactor. (#996)

👷 Build/CI

  • CI should no longer build from docpages changes (#1037)
  • Mac changes, self-hosted runner now available (#1010)
  • Unit tests now use ctest, macos now unit tests (#1003)

Thank you for using D++!

v10.0.28 release

05 Nov 17:55
1d6a67a
Compare
Choose a tag to compare

We are happy to announce the release of D++ 10.0.28! This release fixes a few long standing issues, the main one being the way the library handles a mismatch between release and debug builds on windows with the project that links to D++. Instead of an exception which points to some obscure code called _Scary->_MyHead you will get a dialog box popup instead before the library throws. This makes troubleshooting while developing a lot more straightforward.

Autocompletes where the options are numeric will also no longer throw an exception in on_autocomplete.

The changelog is listed below:

Release Changelog

🐞 Bug Fixes

  • Integer autocompletes no longer cause crash (#992)
  • Add maybe_unused to build_type constexpr to squash warning (#993)
  • Exorcised the scary head. halloween is over (#980)

♻️ Refactoring

  • Renamed inner_emoji to component_emoji, changed select_menu and component to use it. (#974)

📚 Documentation

  • Added all file changes from #820 (#990)

💎 Style Changes

  • Refactored comments part 3 (#979)
  • Refactored comments part 2 (#977)
  • Refactored comments in several files to follow standard (#975)

📜 Miscellaneous Changes

  • VCPKG info update [skip ci]

👷 Build/CI

  • Move ARM64 to self hosted runner (#994)
  • Updated nlohmann to 3.11.2 (#991)
  • Add self hosted arm runner (#983)
  • Vcpkg fix

Thank you for using D++!

v10.0.27 release

27 Oct 17:06
87eef8b
Compare
Choose a tag to compare

We are pleased to announce the Spooky release of D++ 10.0.27 👻 just before Halloween! This release is filled with non-ghostly enhancements and ghoulish fixes, notably, the way we store guild members has changed slightly, so you might find that where you were directly accessing values such as the roles vector, instead you need to use get_roles(). This is so we can correctly track which parts of the structure you changed if you send it to Discord in an API request.

We have also changed the way we hold icon data, to allow for uploading of guild banners etc.

Support for Discord's Premium App Subscriptions feature is now added. For more details please see the New Features section of this release announcement.

The changelog is listed below:

Release Changelog

💣 Breaking Changes

  • guild_member state tracking (#909)
  • Changed dpp::role's icon field to utility::image_data

✨ New Features

  • Support iconhash/image data variant fields (#965)
  • utility::image_data for storing... image data
  • Added methods to change guild icon, banner, splash, discovery splash
  • Added methods to set a scheduled event's banner
  • Added support for Premium App Subscriptions (#969)
  • Added application and following support for webhooks. (#960)
  • Added the ability to limit emojis to certain roles (#959)
  • Support subcommand autocomplete (#963)
  • dpp::application is now updated, added set_iconhash_not_null (#953)
  • Allow changing of HTTP protocol to 1.0 for backwards API endpoints and broken servers (#951)
  • Added component default values (#889)
  • Added bulk command deleting. (#938)
  • Added thread_get for threads (#930)
  • Added support for hsl colors (#924)
  • Improved human readable error messages to default logger, with unit test (#921)
  • Added an error for caps in command_option. (#918)

🐞 Bug Fixes

  • Multiheader-cookie test, now queries a domain and url in our control which returns 3 hard coded test cookies (#968)
  • Make embed color optional (#961)
  • Fix interaction_modal_response's ambiguous to_json (#956)
  • Make modals work again by making to_json_impl and fill_from_json virtual (#950)
  • Dont require guild cache to fill member roles in message (#945)
  • Make snowflake formattable again (#943)
  • Refactored guild_member_remove
  • Refactors for readability
  • Unit test to comply with new message_delete
  • Fix clang c++17 build (#933)
  • Threads now send correctly to Discord. (#931)
  • Run coro and sync generator to make coro and sync thread_get
  • Fix bug introduced by #927 (#928)
  • Guild member flags can't be set by a bot (#911)

♻️ Refactoring

  • Coro: deprecate dpp::job handler & push dpp::task instead, and remove static_assert in dpp::job (#958)
  • Fix json_interface (#937)

📚 Documentation

  • Comments are now more specific in code style. (#964)
  • Added a note to setting_status for guild cache (#955)
  • Added a page for default select menu values. Added a section in components3 for role select menus (#947)
  • Reorganize interactions and components, add subcategories and move some things to other places (#942)
  • Refactored code examples to comply with code standard (#940)
  • Added a page for clearing slashcommands (#939)
  • Changed making_threads.md to include more info (#932)
  • Embedded video into windows_vs.md (#916)
  • Merged all changes to make_a_bot from #820 (#915)
  • Corrected FreeBSD.md and openbsd.md (#914)
  • Added OpenBSD to README.MD (#891)

💎 Style Changes

  • Change two namespace on one line to dpp::event (#925)
  • Removed blank lines in dtemplate (#920)

📜 Miscellaneous Changes

  • Missing runs
  • Feat!: updated integration to now contain more information (#954)
  • Been on a refactor binge (#941)
  • Broken event data in on_message_delete, on_role_delete Improvement: improved detail for many other delete events, where we can give partial information instead of none for a delete event or give ids Refactor: Remove using namespace dpp and using json = nlohmann::json` in event handler source files
  • Add clang builds (#934)
  • Added resolved object example (#923)
  • Freshen up dpp::snowflake and dpp::managed (#912)
  • Removed version_checker for UE. (#970)

👷 Build/CI

  • Fix vcpkg surely (#973)
  • Fix #926, speedrun to #1000 (#927)
  • Refactor json.h out of include from discordevents.h (#926)
  • Cancel concurrent test docs examples (#919)
  • Fixed an issue with labeler failing (#917)
  • Changes to labeler, stopped labeler from changing every push. (#913)
  • Prevent ci runs being cancelled by github incorrectly (backwards) (#910)
  • Improved security on workflows. (#903)

Thank you for using D++!