DPP

C++ Discord API Bot Library - D++ is Lightweight and scalable for small and huge bots!

APACHE-2.0 License

Downloads
56
Stars
943

Bot releases are visible (Hide)

DPP - v10.0.29 release Latest Release

Published by braindigitalis 10 months ago

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

DPP - v10.0.28 release

Published by braindigitalis 12 months ago

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

DPP - v10.0.27 release

Published by braindigitalis 12 months ago

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

DPP - v10.0.26 release

Published by braindigitalis about 1 year ago

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 to wsclient.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++!

DPP - v10.0.25 release

Published by braindigitalis about 1 year ago

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) and target_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-free dpp::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 to dpp::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 todpp::utility` namespace (#737)
  • Add flags and is_remix() to dpp::attachment (#727)
  • Added role flag IN_PROMPT (#728)
  • Coroutines, still experimental but useable (#724)
  • Added message_author_id field to message_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 of set_color with correct spelling
  • Add files via upload
  • Added setter methods to dpp::invite class (#708)
  • Added global_name to dpp::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 and new, use unicode_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 and cluster::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 the global_name if it's set (#733)
  • Fix header, add emoji gen
  • Force dpp::to_hex to use std::locale::classic for formatting (#725)
  • Added cluster::thread_edit, fix cluster::thread_members_get, refactor cluster::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 to dpp::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 & added set_permission_overwrite and remove_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: https://github.com/Microsoft/vcpkg/pull/31568#discussion_r1203637718

πŸ‘· Build/CI

  • Silence changelog generator warning emission, not useful when running by hand (#814)
  • We have to silence error reporting here or we get stderr intermixed into our changelog. this is just extra busywork during release that we dont want (#795)
  • Force reupload with clobber, and sign a copy of the source archives (#792)
  • Coro: add "resumer" to spelling checks
  • Delete .clabot, not required for new cla/dco bot (#789)
  • Create .onefuzz to make scorecard happy (#790)
  • Create .clabot for CLA agreements for new contribs (#787)
  • Improve changelog parsing and order (#768)
  • Fix codacy not liking "else" for some reason πŸ™„
  • Add signing shell script to auto sign releases with gpg and upload .asc alongside artifacts
  • Apply security best practices (#749)

Thank you for using D++!

DPP - v10.0.24 release

Published by braindigitalis over 1 year ago

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 the ban_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 type dpp::active_thread_map for it
  • Fixed cluster::thread_members_get and cluster::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 to is_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 to interaction_create_t from #641 (#646)
  • Refactored webhook constructor & add_localization & get_parameter in context_menu_t and message_context_menu_t (#641)
  • Refactored webhook constructor
  • Removed get_parameter from context_menu_t and message_context_menu_t
  • Refactored slashcommand to_json and the description parameter of add_localization is now optional
  • Changed second deep_sea to blue_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 and USE_SOUNDBOARD permission
  • Add MIME type to HTTP file transfer API
  • Add DPP_ROOT_PATH CMake variable, replace CMAKE_SOURCE_DIR with DPP_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 and max_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 to active_threads
  • Renamed active_thread_map to active_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++!

DPP - v10.0.23 release

Published by braindigitalis over 1 year ago

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 from MONETIZATION_ENABLED to CREATOR_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 and dpp::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 and user_get_cached_sync
  • Added a bit of documentation
  • Added == operator in definition.
  • Added Message types for stages: STAGE_START, STAGE_END, STAGE_SPEAKER and STAGE_TOPIC
  • Added SUPPRESS_NOTIFICATIONS message flag (#609)
  • JSON parse errors are now converted to error_info and passed to the callback for post_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 and dpp::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 with i_webp
  • Updated url getters to have enum parameters as the image format

πŸ’£ Breaking Changes

  • Removed guild flags dpp::g_commerce and dpp::g_private_threads
  • Added after-parameter to cluster::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++!

DPP - v10.0.22 release

Published by braindigitalis almost 2 years ago

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

DPP - v10.0.21 release

Published by braindigitalis almost 2 years ago

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 to uint16_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 move event_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 and component::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 to guild_role_delete_t
  • Refactor timed_listener header

🚨 Testing

  • Unit tests fixes and beautification

Thank you for using D++!

DPP - v10.0.20 release

Published by braindigitalis about 2 years ago

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

DPP - v10.0.19 release

Published by braindigitalis about 2 years ago

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

DPP - v10.0.18 release

Published by braindigitalis about 2 years ago

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

DPP - v10.0.17 release

Published by braindigitalis about 2 years ago

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

DPP - v10.0.16 release

Published by braindigitalis about 2 years ago

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

DPP - v10.0.15 release

Published by braindigitalis about 2 years ago

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

DPP - v10.0.14 release

Published by braindigitalis over 2 years ago

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

DPP - v10.0.13 release

Published by braindigitalis over 2 years ago

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

DPP - v10.0.12 release

Published by braindigitalis over 2 years ago

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

DPP - v10.0.11 release

Published by braindigitalis over 2 years ago

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

DPP - v10.0.10 release

Published by braindigitalis over 2 years ago

We are happy to announce the release of D++ 10.0.10! This release further improves voice receiving, adds a new intuitive class around the permissions system so that you can for example call a .has() method on it, and separates out the unit tests so that various tests can be run without the need for a token. There is also now functionality for sending webhooks with files.

This update is recommended if you make heavy use of the voice receive functionality, or just like the run the latest and greatest!

The changelog is listed below:

Release Changelog

🐞 Bug Fixes

  • Fix duplicate includes
  • Win32 builds with moved headers
  • Docs typo
  • Don't document deps
  • Wrap-around for voice receive
  • Fix double API_PATH and weirdness of operators
  • Fix discord_voice_client voice_payload priority when two payloads have the same timestamp.
  • Add export
  • Doxygen
  • Fixed dpp::permission unit test
  • Ignore event GUILD_APPLICATION_COMMAND_INDEX_UPDATE

♻️ Refactoring

  • Move a bunch of socket headers inside the cpp files that use them rather than them being in the .h
  • Change to using ctest to run tests, as this is more standardized
  • Support multiple parameters to permission::add(), remove(), set()
  • Deprecated guild_bulk_command_edit_permissions

πŸ“š Documentation

  • Ignore src directory

πŸ“œ Miscellaneous Changes

  • Some common git ignores
  • Updated sync methods
  • Updated doc of cluster::get_webhook_message
  • Updated sync call methods
  • Updated dpp::permission::has
  • Updated docs on channel_edit_permissions
  • Updated permission class
  • Updated docs of the permission class
  • Updated doc of application_install_params
  • Update title for better SEO
  • Updated docs

πŸ’Ž Style Changes

  • Improve comments and PSR-12 style in the php files

πŸ’£ Breaking Changes

  • Breaking change: updated webhook methods in cluster

✨ New Features

  • Add template to only enable for int convertible types
  • Add ctest to cspell
  • Added missing include in permissions.h
  • Add back returning *this
  • Added examples in the method docs of dpp::permission
  • Added guild_member_remove_role and deprecated guild_member_delete_role because it's just a confusing name
  • Added unit test for dpp::permission
  • Added three attributes (tags, install_params and custom_install_url) to application.h
  • Add lock_permissions and parent_id to cluster::channel_edit_positions

πŸ‘· Build/CI

  • Unit test 'TS' is an online test
  • Refactor unit tests to allow for offline tests and online tests. PRs will run offline tests. Offline means it doesnt need to talk to Discord with a valid API token, but could still do network/internet based things.

Thank you for using D++!

Package Rankings
Top 9.59% on Proxy.golang.org
Top 30.73% on Formulae.brew.sh
Badges
Extracted from project README
Discord Codacy Badge OpenSSF Best Practices D++ CI OpenSSF Scorecard AUR version XBPS version Homebrew version Contributor Covenant Discord