Releases: brainboxdotcc/DPP
v10.0.20 release
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_linkfield - Added
audit_extra::automod_rule_nameandaudit_extra::automod_rule_trigger_typefields & two missing audit types - Added unverified bots default intent. (#500)
💣 Breaking Changes
- Removed
channel::bannerfield - Message flags are now stored as
uint16_tinstead ofuint8_t - Changed the type of
guild::afk_timeoutto enumdpp::guild_afk_timeout_tandguild::max_video_channel_usersdown touint8_t - Changed the type of
guild::afk_timeoutup touint16_tandguild::max_video_channel_usersdown touint8_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_featureablewasn't parsed correctly - Rename
attach()overload toco_attach() - Add
dummy_containertoevent_router_tto 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_tconstructor
📜 Miscellaneous Changes
- Updated forums
- Updated changelog builder (#509)
- Update
README.md
Thank you for using D++!
v10.0.19 release
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_overwritesandchannel::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
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
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_addis 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_badgeto application flags - Added
attachment::descriptionattribute (#482) - Added
attachment::descriptionattribute - Operators for comparing role positions
- Shorthand methods for making subcommands and options easier
- New methods in
dpp::interactionto 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::snowflakein subcommands docs touint64_tand removed extra brackets - Remove newlines
🐞 Bug Fixes
- Pollin/pollout required on Linux
- Make
poll()work on Windows role::get_mentionnot 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_createin many compilers - Fix small issue in
guild::build_json()(#475) - Fix guild
build_jsonafk_timeoutfield addition depends on another field's validity - Fixed subcommand docs (#473)
- Fix slash commands in dm and tidy up .
find/.atto .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
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
- https://discord.com/developers/docs/change-log#sessionspecific-gateway-resume-urls - discord/discord-api-docs#5282
- Add autocomplete support for subcommands arguments
- Added note to voice connect methods
- Experimental support for c++20 coroutines
- Added a
get_user()attribute fordpp::guild_memberfor easier access to the user object. - Add -Wno-psabi
- Added some unit tests for
dpp::useranddpp::utility - Add highlightjs and dracula theme
- Add gdlcount
🐞 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_npon 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_npvariants - 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
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_idin theguild_member_movemethod 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_connectdying andconnect()hanging gracefully
📚 Documentation
- Can directly embed dot graphs into doxygen, with pan and zoom functionality. use
edotor.netto 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_memberfixed #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_addmethod - Added
thread_nameparameter 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_contentandmessage::set_filename - Remove NOMINMAX definition
- Deprecated
cluster::guild_ban_addwith 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++!