Releases: brainboxdotcc/DPP
v10.0.30 release
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
fordpp::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
Thank you for using D++!
v10.0.29 release
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
onjson_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
fromchannel.h
intothread.h
- Changed the way messages holds files (#999)
📚 Documentation
- Made the
setting_status
page use the latestready_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
👷 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
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
tobuild_type
constexpr to squash warning (#993) - Exorcised the scary head. halloween is over (#980)
♻️ Refactoring
- Renamed
inner_emoji
tocomponent_emoji
, changedselect_menu
and component to use it. (#974)
📚 Documentation
💎 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
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
'sicon
field toutility::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, addedset_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 ambiguousto_json
(#956) - Make modals work again by making
to_json_impl
andfill_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 & pushdpp::task
instead, and removestatic_assert
indpp::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
andopenbsd.md
(#914) - Added OpenBSD to
README.MD
(#891)
💎 Style Changes
📜 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: Removeusing namespace dpp
andusing json =
nlohmann::json` in event handler source files - Add clang builds (#934)
- Added resolved object example (#923)
- Freshen up
dpp::snowflake
anddpp::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 fromdiscordevents.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++!
v10.0.26 release
We are pleased to announce the release of D++ version 10.0.26! This new version fixes a long standing bug with voice connections where some voice endpoints would reject the connection. If you make use of audio in D++ you are strongly encouraged to upgrade.
We have also added support for disabling the guild and channel caches. At scale, this can save anything up to gigabytes of RAM (if you have for example 200,000+ guilds and several tens of millions of channels on your bot). If you use D++ on a very large bot you should investigate using this new feature. This version also adds support for avatar decorations in the dpp::user
class.
The changelog is listed below:
Release Changelog
✨ New Features
- Allow disabling of guild and channel caches (#895)
- Added an auto-labeller for documentation PRs. (#877)
- Added avatar decoration url to the
dpp::user
class (#732) - Added
[[maybe_unused]]
in some places where it was needed (#856) - Implement clyde AI permission bits (#825)
- Created
get_url
methods for message, channel and user. (#855)
🐞 Bug Fixes
- Should fix #714, closes out issue where length of websocket-sec-key was wrong (#900)
- Update
dispatcher.h
/.cpp (#899) - Base64 sslclient key (#898)
- Awful wrong indentation in stringops (#885)
- Fix formatting in the subcommands example (#881)
- Stopped
_XOPEN_SOURCE
from defining on OpenBSD (#880) - Cmake: fix
include_directories
for installed target (#863) - Updating to fix the clamping behavior of the AVX-512 implementation. (#861)
- Wrong size assignment (#853)
- Corrected
presence.cpp
to allow custom statuses. (#848) - Fixed
discord_voice_client::send_audio_raw
blocking thread when provided with invalid size (#845) - Vcpkg wouldnt build (#843)
♻️ Refactoring
- Destroy spawn of satan type punning in ETF parser (#894)
- Changed user-agent, more logging, removed infinite loop (#883)
- Removal of unused cmake and vcpkg stuff, and adding bold red to some error messages (#867)
- Changed templates to properly fix changes from #868 (#870)
- Improving the efficiency of the AVX-implementations (#866)
- Improve AVX, make detection a little nicer (#865)
- Remove bad compile defs (#844)
- Organised .gitignore, added .idea to ignore (#827)
📚 Documentation
- Changed the notes on
read_file
. (#896) - Added minimum required clang version (#888)
- Added an openbsd page (#887)
- Added a voice model page (#882)
- Remade the
clion.md
page. (#873) - Added more info to the buildcmake page. Merged
cmake.md
with #820. (#872) - New cache example and file name fixes (#862)
- Fixed a ref issue and added more info in
discordvoiceclient.h
(#871) - Add footer to all install from binary pages (#864)
- Fixed mistakes, removed [&] (#859)
- Add auto testing of examples (#854)
- Merged
coding_style_standards.md
with #820 (#852) - Created a page about making threads (channel threads) (#850)
- Cleaned up
windows_wsl.md
(#851) - Refactored
install-vcpkg.md
(#849) - Added object editing example (#847)
- Added a private messaging page. (#835)
- Changed emojis to
unicode_emoji
and fixed callback page. (#842) - Fixed missing brackets in
attachments.md
(#840) - Added a setting status page. (#841)
- Fixed an issue in
embeds.md
(#838) - Fixed typos and added Callback Functions examples (#829)
- Coro: small touches (#824)
💎 Style Changes
- Fix some simple style issues that seem to happen a lot (#897)
📜 Miscellaneous Changes
- Extra check for 200 and 204 so we dont spam console
- Move the error checks from
sslclient.cpp
towsclient.cpp
where they belong, so they dont cause excessive data copies or false alarms - Expanded labeler to use more labels. (#892)
- Making AudioMixer a member instead of invoking it statically to cut down CPU usage by roughly 50% (#884)
- Fixing a typod type in
avx.h
(#879) - Fixing the AVX2 detection instruction. (#878)
- Improved pull request template, less checkboxes - auto close master PRs with action (#868)
- Updating some variables to be constexpr. (#858)
👷 Build/CI
- Use AVX0 not
T_fallback
- Fix avx issues on arm (#860)
- Remove ninja for all but Windows, for us it is slower than make -j2 (#857)
Thank you for using D++!
v10.0.25 release
Coroutines are here!
🆕 This release comes with the active support of the coroutine features! New with C++20, coroutines are a great way to simplify asynchronous programs, removing the need for callbacks: check out the docs for more information. With them you can also easily do things that were previously very complex, for example assigning an action to a button on the spot!
You will need to build D++ from source and use the option -DDPP_CORO=on
in your CMake command.
Your application also needs to enable C++20 and define DPP_CORO
, by using:
-std=c++20 -DDPP_CORO
in your build command if building manually, or- if using CMake, add
target_compile_definitions(my_program PUBLIC DPP_CORO)
andtarget_compile_features(my_program PUBLIC cxx_std_20)
.
⚠ Currently, coroutines are supported on g++11 and above, clang14 and above, and MSVC 19.37 and above. Note that g++11 and g++12 have a compiler bug with lambdas, which is fixed in g++13 (workaround described in one of the examples).
Note that this feature is still new and may have bugs and crashes, please report any to our GitHub or to our Discord server. Feel free to ask for support in the latter as well!
We hope you enjoy, and we will be co_awaiting your feedback!
We have also added support for AVX, AVX2 and AVX512 for mixing audio streams, when you receive audio from many discord users into one stream. This will improve the performance of mixing by many factors if you have a processor that can support it; as of right now, this is 64 bit Intel/AMD machines with plans to support ARM NEON.
We will also be joining the google os-fuzz and are to be considered as a critical infrastructure project - this means that you can expect even more stable releases from us, as well tested as ever and then some!
Release Changelog
💣 Breaking Changes
- Remove
co_attach
& enforce event handler call semantics (return void/dpp::job
, take const event) (#807)
✨ New Features
- Coro: more stuff! not breaking this time! (#813)
- Coro:
dpp::task::cancel()
, lock-freedpp::task
- Coro: coroutine, a lightweight synchronized coroutine object
- Coro:
dpp::job
, a lightweight async coroutine - Added
dpp::utility
::guild_navigation
helper (#810) - Updated the reaction struct for super reactions (#811)
- Application team member roles feature (#805)
- Build: add off-by-default
DPP_USE_PCH
option in CMake (#793) - Coroutines "beta test" (#763)
- Added can and
can_any
methods todpp::permission
class (#776) - Added commonly user terms (#718)
- Add SPDX-License-Identifier to headers in files
- Introduce the media channel type (#746)
- Adding AVX implementation for mixing audio. (#745)
- Add STDCORO to cspell
- Add
dpp::snowflake::str()
that returns string form of snowflake value - Added functionality for guild onboarding and welcome screen (#734)
- Add
bool
is_coro_enabled()function to
dpp::utility` namespace (#737) - Add flags and
is_remix()
todpp::attachment
(#727) - Added role flag
IN_PROMPT
(#728) - Coroutines, still experimental but useable (#724)
- Added
message_author_id
field tomessage_reaction_add_t
event (#730) - Add missing audit log events (#729)
- Add missing audit log events:
CREATOR_MONETIZATION_REQUEST_CREATED
,CREATOR_MONETIZATION_TERMS_ACCEPTED
- Add .clang-tidy for linting rules (#726)
cluster::interaction_followup_get_original
(#723)- Add
embed::set_colour()
, alias ofset_color
with correct spelling - Add files via upload
- Added setter methods to
dpp::invite
class (#708) - Added
global_name
todpp::user
(#712) - Added user field to
dpp::invite
(#698) - Added the
USE_EXTERNAL_SOUNDS
permission (#701)
🐞 Bug Fixes
- Avx on raspberry pi 4 didnt build (#823)
- Broken emoji symbol names (#822)
- Fix unicode symbol name for piñata, and also make constexprs inline
- Fix malformed emoji symbol names
-1
,+1
andnew
, useunicode_emoji
namespace in unit tests instead of hard coded emoji content - Silence a client event we arent supposed to receive
unicode_emoji.h
now compiles properly (#806)- Update to change the accepted system processor types. (#819)
- Update
DetectArchitecture.cmake
to only search for required CPU-flags. (#816) - Dont try to enable AVX on ARM (or any non
x86_64
/x86 arch) (#815) - Fixed
cluster::guild_create
,cluster::stage_instance_create
andcluster::sticker_packs_get
returning 404 Not Found (#809) - Make cmakelists use the correct AVX2 instruction (#786)
- Fix
discordevents.cpp
exports on Windows (#781) - Don't allow user to change ws mode on a connected cluster (this would be bad) (#778)
- Fix various issues and bugs with
dpp::emoji
(#775) - Accidentally removed the preamble from the DCO, we arent allowed to do this - i put it back
- Fix dodgy search and replace, vscode inserting newlines
default
empty destructors- Delete copy and move assignment operators for cluster
- Workaround gcc-12 bug #105329 (#748)
- Uninitlized
overshoot_accumulator
in voice timers - Coroutines: better support for clang, remove experimental if unneeded, add missing headers (#743)
- Warning for [=] copy without explkit , rerun coro builder for onboarding
- Add /bigobj to non-VCPKG MSVC CMake flags, fixing ninja build, and fix
CMakeSettings.json
(#740) user::format_username
now returns theglobal_name
if it's set (#733)- Fix header, add emoji gen
- Force
dpp::to_hex
to usestd::locale
::classic for formatting (#725) - Added
cluster::thread_edit
, fixcluster::thread_members_get
, refactorcluster::threads_get_active
, add a bunch of tests for threads (#700) - Allowed sync/coro function generator to handle overloaded functions, update sync/coro methods (#705)
interaction_modal_response::fill_from_json
(#703)- Fixed errors on Windows when linking an executable with DPP (#697)
- Fix linking errors on Windows when linking an executable with dpp
🚀 Performance Improvements
- Coro: lock free
dpp::async
♻️ Refactoring
- Coro: renamed
dpp::awaitable
todpp::async
- Change
interaction_response.msg
from message* to message, fixing double free on copy (#762) - Json parsing helper functions added to unify the way arrays are parsed (#744)
- Use nullptr instead of NULL
- Use structured bindings
- Change
std::for_each
to ranged for loops - Changed the behaviour of
channel::add_permission_overwrite
(#702) - Changed the behaviour of
channel::add_permission_overwrite
& addedset_permission_overwrite
andremove_permission_overwrite
methods
🚨 Testing
- Add enum for test status and type, make each test a variable, add coro tests
- Add g++-12
- Add extended unit tests mode (#731)
📚 Documentation
- Changed
README.md
to include nightly builds. (#821) - Add emojis to titles in readme (#817)
- Refactored page links (#808)
- Added a page about sending "only you can see this" messages. (#803)
- Created a page for separating events into new classes. (#802)
- Added a new page for
on_message_create
and changed warnings about message content privilege. (#799) - Improved Jenkins page. (#798)
- Fixed several small things in docs (#797)
- Coro: update docs for PR #763
- Added docs page about checking permissions (#777)
- Fixed some doc pages with errors. (#784)
- Created a page for automating builds with Jenkins. (#783)
- Made
collect_reactions
page more explicit. (#780) - Fixed typo in documentation example (#782)
- Fixed errors on reaction collectors example page (#779)
- Remove lines of code badge as it is broken upstream (#772)
- Fix of #771 where final push was missed. (#773)
- Improve build speed of codeql (#769)
- Make the PR template less bloaty
- Governance, roadmap, security pages for best practices badge
- Add openssf scorecard to readme
- Fix typo (#741)
- Some tweaks in code examples (#742)
- Documentation for
unicode_emoji
namespace (#739) - Documented deprecation policy (#738)
- Updated
README.md
(#707)
💎 Style Changes
- Coro: split
coro.h
into its own folder
📜 Miscellaneous Changes
- (WIP) docs(coro): reorganize coro docs and add examples for new features (#818)
- Modernize command handle page (#800)
dpp::slashcommand
constructor for context menu commands (#801)- Updating to the correct AVX2 instruction.
- Updated out-dated doc pages to now use slashcommands. (#771)
- Update
disdppgloss.md
- Create
pull_request_template.md
- Update
scorecard.yml
- Update
dependabot.yml
- OpenSSF best practices badge (#766)
- Update
README.md
- D++ == CHAD++ // true (#747)
- Clang-tidy namespace comment autofix
- Enable CORO on g++11, g++12, osx
- Dont enable AVX when compiling on GHA
- Update
CONTRIBUTING.md
- Update
CONTRIBUTING.md
- add rules about not just using automated tools to generate bad prs - More spellcheck words
- Spellcheck words for emoji names
- Update .
cspell.json
- Better creation of unicode emojis that will actually work
- Update
INDEX.md
- Move misplaced compiler definitions to options and make linker option Debug-Mode dependent (#715)
- Adapt
dpp::user::get_default_avatar()
to new username system (#711) - Re-construct: Fixed issue #604 (#699)
- Adjust vcpkg ci action to modernize for next release, ref: microsoft/vcpkg#31568 (comment)
👷 Build/CI
v10.0.24 release
We are pleased to announce the release of D++ 10.0.24! This new release has four months of fixes and feature enhancements, including:
New guild member flags, on_guild_audit_log_entry_create
gateway event, join raid and mention raid protection feature, support for voice messages, slashcommand_t::get_parameter
supports subcommands, APPLICATION_AUTO_MODERATION_RULE_CREATE_BADGE
, VIEW_CREATOR_MONETIZATION_ANALYTICS
and USE_SOUNDBOARD
permissions, added MIME type to HTTP file transfer API, and also added the ps_invisible
presence status.
There is unfortunately no news yet on the structure the API will take for the new discord usernames and replacement of discriminators. When we have more details on this, a new release supporting it officially will follow ASAP.
The changelog is listed below:
Release Changelog
🐞 Bug Fixes
- Fix hard coded ref to g++ 10
- Fixed message reaction events not executed in threads (#696)
- Redesign message unit tests so there is no blocking calls in
on_message_receive
- Moved online unit tests from
on_ready
event handler to main thread - Fixed memory leak and potential use-after-free bug with voiceconn (#687)
- Fix memory leak and potential use-after-free bug with voiceconn
- Fixed bug in automod parsing that caused the actions being empty when fetching an automod rule
- Fix for
Gcc13.1
(#664) - Fixed for gcc 13.1
- Fix cluster sync definition for
threads_get_active
and add an error check to the sync generator so we know sooner if its broken - Fix send voice message permission value
- Add missing mimetype to external HTTPS requests (#656)
- Fix external HTTP requests not sending MIME type
- Fixed
cluster::guild_get_bans
(#655) - Fixed
cluster::guild_get_bans
which stored all bans in theban_map
with key 0, causing the method to return only one ban from the list - Move cl compilation flags that clang-cl doesn't recognize to a "not clang-cl" clause (#653)
- Fixed
get_parameter
(#648) - Fixed
command_option
parsing which didn't parse commands with too many subcommands and subcommand groups (#647) - Fix unittest for
get_parameter
- Fix DPP install copying entire source tree root
include/
in its install directory when added as a subdirectory (#637) - Fix DPP install copying source root
include/
in its install directory as subdirectory - Fixed
cluster::threads_get_active
(#633) - Fix detection of sodium on Windows
- Fixed
cluster::threads_get_active
method and added a new return typedpp::active_thread_map
for it - Fixed
cluster::thread_members_get
andcluster::thread_member_get
which accidentally had the wrong endpoint - Fix typo in vcpkg builder
- Fix merge conflict
- Make this work
- Why is there a #include '
user.h
'? - Fix sudo requirement
- Yaml parser doesnt like : in quoted text?
- Indent and derp
- Fix broken vcpkg collector
- Fix bottom-of-portfile to not try to apply broken patch
♻️ Refactoring
- Updated invite struct & added unittests for invites (#695)
- Renamed
is_premium_subscription
tois_premium_subscriber
- Added helper functions to create endpoint urls (#684)
- Modernize
dpp::permission
(#651) - Removed cout (#685)
- Changed the way guild member flags are parsed
- Removed unused #include from
guild_audit_log_entry_create.cpp
- Revert
get_parameter
tointeraction_create_t
from #641 (#646) - Refactored webhook constructor &
add_localization
&get_parameter
incontext_menu_t
andmessage_context_menu_t
(#641) - Refactored webhook constructor
- Removed
get_parameter
fromcontext_menu_t
andmessage_context_menu_t
- Refactored slashcommand
to_json
and the description parameter ofadd_localization
is now optional - Changed second
deep_sea
toblue_chill
- Remove redundant
send_silence
(#627) - Refactor vcpkg generator
✨ New Features
- Added some missing role fields (#691)
- Added
i_guild_subscription
integration type (#692) - Added url getter for emojis (#682)
- Added guild member flags (#679)
- Added
on_guild_audit_log_entry_create
gateway event (#678) - Added explicit casting to avoid warnings (#676)
- Added join raid and mention raid protection feature (#667)
- Added join raid protection guild feature. This bumps the guild
flags_extra
field from 1 byte to 2 bytes! - Added automod mention raid protection to the trigger metadata class
- Support for voice messages (#660)
- Added channel object to interaction (#649)
slashcommand_t::get_parameter
supporting subcommands- Added
APPLICATION_AUTO_MODERATION_RULE_CREATE_BADGE
application flag (#644) - Added
VIEW_CREATOR_MONETIZATION_ANALYTICS
andUSE_SOUNDBOARD
permission - Add MIME type to HTTP file transfer API
- Add
DPP_ROOT_PATH
CMake variable, replaceCMAKE_SOURCE_DIR
withDPP_ROOT_PATH
- Add unit test to show the value of multimaps here
- Added many new colors and created alias for colors called colours (#630)
- Add
ps_invisible
presence status
🚨 Testing
- Fixed
managed::get_creation_date
unittest (#690) - Fixed emoji get unittest (#689)
- Fixed emoji get unittest. It failed because Discord's respond doesn't include the user which created the emoji on creation
- Refactor blocking calls out from events in unit tests (#688)
- Added some
dpp::message
-related tests (#686) - Slightly polished
dpp::message
unit tests - Fixed
testdata/DPP-Logo.png
case in unit tests - Added file attachment tests
- Added message pin test
- Added message edit test
- Added unittests for creating/getting/deleting a custom emoji
- Added unittests for automod rule creation, fetching and deleting (#666)
- Updated unit test for automod
- Added unittests for creating, getting and deleting bans (#657)
- Added unittest for voice channel creation, editing and deletion (#652)
- Added unittests for creating, getting and deleting bans with some real (deleted) Discord accounts
- Fix unit test for
get_parameter
- Added unittest for
interaction_create_t::get_parameter
👷 Build/CI
- Fix broken x86 builds
- Reformat and refactor the vcpkg generator [skip ci]
📜 Miscellaneous Changes
- Forgot something in emoji unittest
- Updated some docs & command option
min_length
andmax_length
parsing (#672) - Updated information regarding WSL
- Try to fix
get_parameter
- Update upload-artifact action to v3
- Update checkout actions to v3
- Update .
cspell.json
- Renamed
active_thread_map
toactive_threads
- Renamed
active_thread_map
toactive_thread_map
- Update ref/sha
- Update git tree tag
📚 Documentation
- Added link to all events pointing to the Discord documentation's gateway events (#673)
- Small tweak for
has_send_voice_messages
- Fixed some docs (#659)
- Add throws to
get_parameter
- Updated coding style standard (#642)
- Documentation for setting up D++ in CLion with CMake and vcpkg (#639)
- Documentation on how to set up D++ through vcpkg for CLion.
- Documented spell checks in the coding style standards (#636)
- Updated docs of
cluster::threads_get_active
- Changed docs of
get_user
method
Thank you for using D++!
v10.0.23 release
We are happy to announce the release of D++ 10.0.23! This new version adds support for custom automod messages, the new user_get_cached
function (retrieve a user from the cache if possible otherwise issue an asynchronous user_get call), new message types, plus the ability to suppress notifications for a message, flags for role subscriptions, and a whole boatload of fixes.
The changelog is listed below:
Release Changelog
🐞 Bug Fixes
- Use a define to determine what to include
- Fix WS error when intents is 0 (#623)
- Fix websocket error when intents is 0
- Bad deref of audio track marker on aarch64
- Suppress notifications flag is 1 << 12 not 1 << 9
- Fixed bug in
channel::build_json
which caused an invalid form body error when creating a voice channel without a bitrate set - Fixed the logic for ids of 0.
- Fix and silence some clang warnings
- Fix some possible memory leak issues if we throw from a constructor
- Handle
std::bad_alloc
in constructors by cleanup and rethrow (fixes #598) - Fixed possible bug in guild parsing with the
g_unavailable
flag - Fixed guild feature parsing for
dpp::g_monetization_enabled
because Discord changed the name fromMONETIZATION_ENABLED
toCREATOR_MONETIZABLE_PROVISIONAL
♻️ Refactoring
- Change to current source dir so this doesnt break when used as a dependency
- Remove some fluff
- Make it possible to use a system install of nlohmann using
-
DDPP_USE_EXTERNAL_JSON=ON
fix: remove unneccessary patch for making pkgconfig mandatory on vcpkg - this is no longer required. - Deprecated guild flags
dpp::g_seven_day_thread_archive
,dpp::g_three_day_thread_archive
anddpp::g_channel_banners
- Removed code redundancy by
get_parameter
and make it private instead of overwriting it (#602)
✨ New Features
- Add oggz example
- Added custom message for automod rules (#618)
- Added operator == to
dpp::guild_member
(#616) - Added check for id of 0
- Added missing const in implementation
- Added operator == implementation
- Added operator == to
dpp::user
user_get_cached
anduser_get_cached_sync
- Added a bit of documentation
- Added == operator in definition.
- Added Message types for stages:
STAGE_START
,STAGE_END
,STAGE_SPEAKER
andSTAGE_TOPIC
- Added
SUPPRESS_NOTIFICATIONS
message flag (#609) - JSON parse errors are now converted to
error_info
and passed to the callback forpost_rest()
, so they can be handled by the user - Added Message types
INTERACTION_PREMIUM_UPSELL
&GUILD_APPLICATION_PREMIUM_SUBSCRIPTION
(#607) - Added Message types 26 & 32
- Added guild flags
dpp::g_role_subscription_enabled
,dpp::g_creator_store_page_enabled
,dpp::g_no_role_subscription_notifications
,dpp::g_no_role_subscription_notification_replies
anddpp::g_role_subscriptions_available_for_purchase
- Changed image url getters to be able to choose the returned image format (#599)
- Added setter for the
channel::default_sort_order
(#592) - Added missing user flag for animated banners
- Added new message type
mt_role_subscription_purchase
(#593) - Added setter and getter for the
channel::default_sort_order
📚 Documentation
- Updated some docs
get_option
->get_value
in subcommand example- Updates merged from other commit
- Updated docs of
cluster::guild_auditlog_get
(#615) - Added documentation for the find_ methods (#606)
- Updated docs of
dpp::application_role_connection_metadata
📜 Miscellaneous Changes
- Guild flags updated (#603)
- Updated url getters & added
get_default_avatar_url
- Updated sticker url getter
- Removed channel getter for the default forum sort order
- Updated current
load_image
methods to work withi_webp
- Updated url getters to have enum parameters as the image format
💣 Breaking Changes
- Removed guild flags
dpp::g_commerce
anddpp::g_private_threads
- Added
after
-parameter tocluster::guild_auditlog_get
(#594)
👷 Build/CI
- Rework setting of compiler flags (#596)
- Make C++17 a public compile feature
- Drop explicitly set -O and -g flags for Linux where possible
- Drop manually set -fPIC and -std=c++17 flags on Linux
- Use
CXX_FLAGS_
{DEBUG,RELEASE} to get rid of if-else blocks
🚨 Testing
- Added unit test for the user avatar url getter
Thank you for using D++!
v10.0.22 release
We are pleased to bring you the first D++ release of 2023! This new release brings with it a whole load of fixes, tweaks, and some new features such as Discord's new application role connection feature, and new auto moderation features.
We recommend updating to the latest version to stay on top of Discord's API changes.
The changelog is listed below:
Release Changelog
🐞 Bug Fixes
- Fix comment about libdpp->dpp
- Fixes to libdpp-config
- Fixes to the DPP installlation on Linux (#591)
- Fix cluster sync calls for subscription calls
- Fix channel bitrate parsing on channel bitrates over 65 kbits (#587)
- Exclude single word commits from changelog (after conventional commit prefix)
- Rgb uses float not double, make this match
- Spacing and add comment
on_voice_state_update
event hasn't updated the guild member in the cache (#580)dpp::cluster::thread_create_in_forum()
crashes the bot without a clear error when the bot has insufficient permissions (#577) (#578)- Fix channel bitrate calculation (#568)
- Array of error parsing (#567)
- Fix missing semicolon in example (#557)
- Fix compiler warning (#556)
- Fix voice support for vcpkg (#553)
- Fix non-compiling soak test
✨ New Features
- Added support for application role connection metadata (#584)
- Added map typedef for
application_role_connection_metadata
- Support for age restricted commands (#588)
- Support for default forum layout (#586)
- Added convertions from hex and cmyk colors to decimal value (#581)
- Added convertions from hex and cmyk colors to decimal value to use in embed
- Added
guild_member::set_pending
(#579) - Added
dpp::u_active_developer
user flag (#548) - Added automod regex support (#547)
📜 Miscellaneous Changes
- Updated application role connection feature & added
rest_request_vector
for rest requests returning real lists - Updated docs of interaction class
- Update
discordvoiceclient.cpp
- Change to float not double
- Updated unit test
USER_GET_FLAGS
- Updated unit tests for role cluster
- Update
user.cpp
📚 Documentation
- Updated docs of
scheduled_event::set_status
- Updated the descriptions of
dpp::voicestate_flags
(#575) - Updated automod docs according to Discord's changes (#564)
♻️ Refactoring
- Remove
guild::set_pending
again (#585) - Deprecated
dpp::g_private_threads
guild flag and mark as removed (#563)
🚨 Testing
- Added unit tests for the new mention for
channel_mention
,user_mention
,role_mention
andemoji_mention
in utility the namespace (#576) - Added unit tests for role cluster methods,
cluster::guild_get_member
and user flags parsing (#565) - Report stats in soak test
Thank you for using D++!
v10.0.21 release
We are proud to release the latest version of D++, version 10.0.21! This new version implements the latest Discord features from the API such as the new nitro basic flag, new select component types, and the developer support server flag. Alongside this are a raft of small bug fixes. This is a recommended update for all those wishing to stay at the cutting edge of the Discord API in their bot or application.
Release Changelog
✨ New Features
- Added channel flag
dpp::c_require_tag
for forum channels.dpp::channel
::flags has increased touint16_t
! (#538) - Add missing fields for new select menu types (#535)
- Added user flag for nitro basic (#534)
- Added
dpp::g_developer_support_server
guild flag (#533) - Added new select menu types & new field
component::channel_types
(#529) - Add contributor convenant badge
- Added
channel::get_type
&forum_tag
constructor (#517)
🐞 Bug Fixes
- Fix potential rare race condition
- Fixed various C++23 issues (#537)
- Fix not being able to pass temp msg object to
thread_create_in_forum
(#532) - Ensure we include ctime
- Emit
guild_role_delete_t
when role isn't cached (#524) - Fix linking weirdness with template on Windows
- Didnt get added
- Fix race conditions under heavy load, change some locks to
shared_lock
, and moveevent_router
to its own header - Fix missing . in guild/user avatar urls before file extension
- Permissions for the invoking member in an
interaction_create_t
event wasn't parsed (#519) - Fix broken construct vcpkg
📜 Miscellaneous Changes
- Update LICENSE
- Removed todo
- Added mentionables to cspell
- Update code of conduct to
v2.1
(#531) - Update sync calls
- Update
CODE_OF_CONDUCT.md
- Update
construct-vcpkg-info.yml
- Updated comments on
component::min_length
andcomponent::max_length
💣 Breaking Changes
- Removed
dpp::component_type_t
.dpp::component_type
should be used instead!
📚 Documentation
- Add example of arbitrary http request
♻️ Refactoring
- Add helper to
command_data_option
to check if it is empty (#527) - Remove externs from
event_router_t
- Add
role_id
toguild_role_delete_t
- Refactor
timed_listener
header
🚨 Testing
- Unit tests fixes and beautification
Thank you for using D++!