Releases: brainboxdotcc/DPP
v10.0.5 release
We are happy to announce the release of D++ 10.0.5, which includes several bugfixes, and also includes a breaking change to the parameters to guild_get_bans
and guild_get_bans_sync
due to Discord adding additional parameters API-side.
There have been several performance improvements to the library, and we have added colour constants, default error logging to all callbacks if not specified, operator==
for all dpp::managed
derived objects and more!
The changelog is listed below:
Release Changelog
♻️ Refactoring
- Lock doesnt need to be active when the thread is signalled
- Some improvements to queueing to use
shared_mutex
, this will allow for some fun stuff (tm) later. Also, decrease timeout of queue thread by 10x to ensure things stay snappy in quiet patches - Deprecated summary in integration
- Remove default callback from get method
- Fix ugly sprintf cruft in etf parser
- Changed name of 'hoki'
- Split cluster sync calls to a cpp and h file, much faster to compile than inlines
🐞 Bug Fixes
- Fixed
HEAD_REF
. - Params cant be defaulted as callback must be last
- Windows being Windows
- Mess detector
- Derive json interface
- Wasn't test compiled
- Fix indentation, change from unsigned int to
uint32_t
and add include todpp.h
- Missing namespace
- Fix missing exclamation point
- Group together see entries so the docs are cleaner
📜 Miscellaneous Changes
- Updated docs in
guild.h
&guild::get_banner_url
can now return gif image urls - Updated comment on
guild_get_bans
- Update
README.md
- Update
cluster_sync_calls.h
- Update
cluster.h
- Updated
cluster::guild_member_kick
✨ New Features
- Added guild directory channel type
- Add get, edit, delete original response
- Add
log_error
- Add
premium_progress_bar_enabled
, fixes #270 - Add request to speak timestamp, fixes #317
- Add destructor for select option
- Added more colors
- Added color constants
- Added setup guide for clion & small doc improvements
guild_member_timeout_sync
- Add dependency libc6-dev-arm64-cross for ARM64 toolchain
- Added
guild_member_timeout
and updated docs - Add
set_guild_id
- Add operator== for
dpp::managed
👷 Build/CI
- Some nice stuff in the changelog builder
- Make this better at detecting symbols, make it detect filenames, and make a Discord compatible markdown output to save on maually converting it on release days
- Adjust unit test for
guild_get_bans
- Remove FreeBSD from releases
💣 Breaking Changes
- Breaking change from Discord,
guild_get_bans
andguild_get_bans_sync
now support limit, before and after, and return a maximum of 1000 bans per call - Add parameter
dpp::timer
totimer_callback_t
📚 Documentation
- Fix doxygen block for
set_required
- Update webhook example to use sync call
Thank you for using D++!
v10.0.4 release
Version 10.0.4 of D++ is here!
This version of D++ includes the ability to call cluster methods such as message_get
etc synchronously, as in, they wait until the command is complete and directly return a value instead of needing a lambda. These functions are identical in name to the asynchronous ones, except their name ends in _sync
, e.g. message_get_sync()
. These functions have specific uses, please be sure to read the docs for them on dpp.dev!
The changelog is listed below:
Release Changelog
👷 Build/CI
- disable freebsd builds
- add detection of compiler features to cmakelists, remove [[maybe_unused]] thats not_maybe_ignored
- some adjustments for unit tests
🐞 Bug Fixes
- fix optional parameters in _sync calls
- use doxygen tag to force sync methods to
dpp::cluster
- Fix typo in README
- fix issue with parameterised
dpp::sync
, remove cmakelists duplication, adddpp::sync
unit test - convert dpp_sync to a variadic template
dpp::sync
- windows unit tests, breakpoints thrown
- wrong warning number was silenced
- fix compilation error on windows, silence macro warning
- spelling in new feature
- maybe unused
📜 Miscellaneous Changes
- Update
json_interface.h
- Update .cspell.json
- update doc image
✨ New Features
- _sync calls in cluster
- add
dpp::sync()
for syncronous REST calls - added setup guide for clion & small doc improvements
- default lambda for all api callbacks now logs api-level errors to the logger
📚 Documentation
- tweak doxygen settings
- fix some broken see's
- reference discord api ref for each api call
Thank you for using D++!
v10.0.3 release
We are pleased to announce the release of D++ 10.0.3! This release adds, amongst other things:
- HTTP Keepalives, meaning that the library can send API calls much faster, and respond to slash commands quicker!
- Refactored ordering of member variables saving significant memory at scale
- Added utility functions for escaping of markdown
- Removal of the type string from
confirmation_callback_t
, asstd::holds_alternative
can do this instead
The changelog is listed below:
Release Changelog
🐞 Bug Fixes
- ordering
- missing virtual dtors
- naming and size of
BUFSIZZ
- match new order in initialisation
- some fixes to keepalive, don't allow any session left idle for more than 60 secs to be reused, and dont try and save known dead connections where fd = -1
- fixed wrong return types of several cluster methods
- fix wrong http method
- fixed
user::get_avatar_url
- broken include got in here somehow
- spelling errors
- we had two
json_fwd.hpp
- fix docs check
- Fix #227 remove docs pertaining to messages_get with limit > 100
- Fixes by misspell-fixer
✨ New Features
- added > character to escape markdown method
- http connection keep-alive and request chunking
- added get_sticker_url to sticker class
- add
dpp::utility::version()
♻️ Refactoring
- reorder structures to match alignment(amd64)
- add
json_interface
that specifies the standard methods therest_request<>
template uses - migrate all possible REST to new template
- move these to using the template
- start of templating rest call bodies. much neater
- improve performance of
url_encode
, move to utility namespace, expose a bunch of internal templates in dpp namespace from stringops.h
📜 Miscellaneous Changes
- updated docs & changed component placeholder max-length
- updated
sticker::get_url
- Update
close-master-pr.php
- updated doc
📚 Documentation
- auto generate docs for event handler objects
- hide an internal var from doxygen
- redo windows guides to basically railroad new users to using the template
💎 Style Changes
- auto spell checking of docs PRs
👷 Build/CI
- replace azure. from sources.list because azure mirror is flaky af
💣 Breaking Changes
- remove the string type parameter to
confirmation_callback_t
, because its possible to usestd::holds_alternative
for this on the value
Thank you for using D++!
v10.0.2 release
We are happy to announce that D++ 10.0.2 is here! It features a lot of quality-of-life improvements listed below, and some small fixes. Our current drive is to improve documentation of existing features. If you feel you would like to get involved with this please do submit a PR!
Major changes:
- D++ is now compilable to Apple Silicon
- Full support for containerised workflows
Release Changelog
✨ New Features
- add whole message object to interaction, for context menu clicks on a message
dpp::utility::markdown_escape()
- new ctor for
dpp::utility::uptime
taking a double for use withtime_f()
updated: library now checks when you bind an event to certain types if you have the privileged intent needed to use them, if you dont it will emit a warning to the log explaining what is needed - added example to README.md
- added message content intent note to the guide
🐞 Bug Fixes
- fix for apple silicon
- fix for apple silicon
- fix missing intents, and add basic logger to examples
- fix syntax error
- fix slashcommand creation in examples
- fix dir for building
- fix wrong make install dir
- signedness
- fix blocking
write()
error checking - missing export reported by Eren
- Fixed the blank I forgor
♻️ Refactoring
- make set_warning_callback private, it is for internal lib use
- remove unneeded headers and add comments
- change sitemap generator to once per week on Saturday
- refactor example
- refactor example
- refactor slash command ctor
- refactor examples page and added message content intent whenever it's needed to the ctor
📚 Documentation
- history -> past
- docs fixes
📜 Miscellaneous Changes
- updated docs of howto remove a timeout from a member
- updated README.md
- updated mentioned version
- updated doc examples
- Update docker.yml
- Update docker.yml
Thank you for using D++!
v10.0.1 release
After a busy week of development we are proud to announce the release of D++ 10.0.1! The 10.0.1 branch comes with a lot of refactoring, performance improvements, and quality of life improvements. Amongst these improvements are some shorthand ways of handling and declaring slash commands to make this simpler. To see this in action check out the first bot tutorial.
We have also updated nlohmann::json to 3.10.5 and fmtlib to 8.1, the latest available versions. Our Docker image (brainboxdotcc/dpp:latest) is now kept up to date with our master
branch at all times, making it useful as a deployment option - see here for an example of how to use this to deploy a D++ bot via a Docker image.
The changelog is listed below:
Release Changelog
🐞 Bug Fixes
- fix up the webhook ctor PR, and add a unit test
- fixed stuff mentioned in #293
- force all slashcommand names to lowercase internally
- fix uppercase p
- fix accidentally deleted text
- fix deprecated invite stage
- fixed marks
- fix windows issues and make unit tests pass
- make unit tests able to be run on windows
- fix warning by using fallthrough annotation
- Fixes by misspell-fixer
♻️ Refactoring
- deprecate but not remove commandhandler
- add attachments array to sent messages, if it contains values
- bump nlohmann to 3.10.5, fmtlib to 8.1
- remove useless line in ARMv7 cmake
- deprecated invite stage :(
- remove testing docs
- change to break bc it was a bug
✨ New Features
- add back images
- added webhook constructors
- add QOL methods to
dpp::interaction
that streamline slashcommand events, adddpp::utility::cout_logger()
, and add two newinteraction_create_t::reply
overloads that just take a message or string - added current_member_edit
- added build-a-discord-bot-windows-wsl
- add unit tests page
📚 Documentation
- docs fix: uppercase command name
- get rid of screenshot showing message example
- update first-bot page to use interactions not message commands
👷 Build/CI
- docker deployment
- update dockerfile, and add a CI action to update the docker image
- improve changelog builder
- allow turning off the ldconfig step, and set soversion and symlink
- cmake option to allow disabling of voice even if we have the libs
- make this work on pull request to master
📜 Miscellaneous Changes
- Update 03_example_programs.md
- updated link
- updated docs of guild_set_nickname
- updated docs of current_member_edit
- updated file upload example
- Update close-master-pr.php
- update build and test docs
Thank you for using D++!
v10.0.0 release
🎉 We are pleased to announce the 10.0.0 release of D++! 🎉
As our version releases match the supported API versions, and discord have recently announced version 10 of the Discord API, we are bumping our own version up to 10.x to indicate support for this new version.
If you have recently updated to the last 9.x version, there is no immediate need to upgrade as we are aware this was only a couple of days ago. The changes in the v10 release are minimal and this release is somewhat ceremonial.
Enjoy!
The changelog is listed below:
Release Changelog
📚 Documentation
- update FAQ to refer to v10
♻️ Refactoring
- cut down usage of fmt a bit to reduce compile times and compile memory usage
Thank you for using D++!
v9.0.19 release
We are happy to announce the release of D++ 9.0.19! This version features a rewrite of the HTTP system of the bot which makes REST requests. We have replaced it with something faster, more compact, and easier to maintain, which also fixes some long-standing bugs with windows file uploads.
Alongside this we have also made modal dialogs a stable API feature in the library, and added support for slash command attachment uploads parameters. dpp::utility::read_file
is also now fixed on windows. Many small methods have been added, which are quality of life fixes such as user::format_username()
.
The changelog is listed below:
Release Changelog
✨ New Features
- added stage attribute to
dpp::invite
- added required field to_json in component and removed experimental comments of the modal input
user::format_username()
andutility::bot_invite_url()
- added required field to
dpp::component
- support for ephemeral
event.thinking()
channel::add_permission_overwrite()
- added
global_command_get
as it was missing - added
dpp::guild_command_get
as it was missing - added recursive command option parsing
- added recursive command option parsing
- added some
fill_from_json
methods - added
double_not_null
- added
guild_commands_get_permissions
,guild_bulk_command_edit_permissions
andguild_command_get_permissions
♻️ Refactoring
- add exception handler in queues.cpp for http_client ctor use
- remove cpp-httplib
- unit tests PASSED for new http client
- support plaintext downgrade for ssl_client
- new client files
- begin replacing cpp-httplib with something a bit more streamlined
- constructors for
dpp::command_source
- provide access to underlying events in
dpp::command_source
- refactor slash command permission thing
💣 Breaking Changes
- param_info now accepts correct choice types
🐞 Bug Fixes
- fixed stage instance getter, modifier and delete methods in cluster
- fix
dpp::utility::read_file
on windows - fix missing include
- check that version enforcement succeeds
- dont allow SSL 3.0 TLS 1.0 or 1.1 in SSL negotiation
- numeric limits is odd on windows
- properly serialize role in
role_edit()
- fix windows builds
- fixed typo in
command_option::fill_from_json
- fixed
communication_disabled_until
parsing inguild_member::build_json
- fixed
communication_disabled_until
parsing inguild_member::build_json
- fixed guild member in interaction
- added guild_id and user_id to guild_member default ctor
- add virtual destructor for
dpp::interaction_create_t
- serialise content and embeds array, even if empty
- fixed member.user_id and member.guild_id were not set when receiving an interaction
- fixed
cluster::guild_search_members
- fixed
cluster::guild_get_members
- mute wasn't correctly build in
guild_member::build_json()
- fixed
command_option_choice::fill_from_json
and added unit test for it
👷 Build/CI
- unit tests for new http client
📚 Documentation
- add example for
co_attachment
parameter type - comments for new http client
- remove 'test dpp' section
- remove experimental warning on modal dialogs
- fix doxygen line
- add example eval command 🤮
Thank you for using D++!
v9.0.18 release
We are proud to announce the release of D++ 9.0.18! This version introduces a few new feaures, the most notable are:
- Multi-file upload is now supported!
- We now offer prebuilt binaries for FreeBSD
- Headers have been refactored for faster compilation
- Full presence activity support for bots which are utilising the presence intent
The changelog is listed below:
Release Changelog
🐞 Bug Fixes
- double include of array on win32
- fix concurrency setting
- fixed bug in activity
- fixed reference bug in the command_permission constructor
- role_edit_position not working
emoji::format
didn't return animated emojis- unused variable
- single file http_request
- fixed several typos in the docs
- fixed parameters of execute_webhook
- fixed url parameters in guild_event_users_get
- fixed url parameters of guild_event_users_get
- fixed timestamp url-parameter in thread-getters
- fixed parsing in the four thread-getters and fixed parameter creation
♻️ Refactoring
- xcode clang is demanding we explicitly include this
- timer.h needs unordered_map and stddef on clang
- huge change to remove discord.h, split up the headers a little to fix circular dependencies
- new
channel_edit_permissions()
overload & const params - automatic cache of users and members on receipt of slash command
- changed the activity_flags back to binary format
- clean up ci.yml
- improved
dpp::invite
, fixed bug where guild_id was not set
👷 Build/CI
- master pr close cleans up runs after itself
- files werent added
- auto close master-targetted PRs every 30 mins
- correctly set name of artifact
- move cpack into the bsd vm
- tbz2
- change bsd to bz2 compressed archive as cpack pkg build is broken due to segfault bug!
- freebsd pkg build
- run cpack on bsd
- freebsd: reduce build concurrency
- add git to freebsd
- add dpp build to freebsd action
- freebsd experimental ci
- turnstyle is no longer required
- there was a test case that runs on PR's and shouldnt.
- better restriction of concurrency
- pull in env vars during unit test run
- error logging
- set various ids from env vars
📚 Documentation
- typo in style guide
- update INDEX.md
- fix param description
✨ New Features
- setters for
dpp::channel
- added note
- added note to guild_edit_command_permissions
- added role method: role_edit_positions
- added const declaration in command_permission constructor
- added note to
dpp::guild_edit_widget
- added activity emoji
- added buttons struct
- added activity assets
- add turnstyle
- added details field to activity
- added overloaded method set_footer in
dpp::embed
- added audit log notes to webhook methods
- added
create_timestamp
tothread_metadata
- added failed to mention some roles in thread flag to message flags. documented here
- add multiple attachments
- added note to slash command example
- added timestamp parser to unit tests
- added webhook example
- added new attributes in ctor
- added note
📜 Miscellaneous Changes
- new category & regex for changelog.php
💣 Breaking Changes
- remove non-existing events
💎 Style Changes
- comments
Thank you for using D++!
v9.0.17 release
After a long Christmas break we are happy to bring you D++ 9.0.17! Now that the large man in the red hat has been, we give you one final late present of a new release. This is mainly a quality of life release, with a few fixes as listed below.
The changelog is listed below:
Release Changelog
✨ New Features
- add comment to resolved member_permissions
- add guild member permissions in interactions
- add some comments to docs
- add fix to guild_command_create to solve the permissions edit issue
- added note to user_get
- added static cast
- added constructor for command_permission
- Add image example
- automatically loop and retrieve messages_get with limit > 100
- added channel, guild, role, and user- icons/avatars getters
- added icon, banner, splash and discovery splash -url getters
- add
guild_member::is_communication_disabled()
🐞 Bug Fixes
- fix slash command permissions not copied into struct
- fixed slash command permissions not working
- fix / -> \
- remove export
- fix wrong openssl
- bump to force ci run
- correctly terminate shard threads on cluster destruction
♻️ Refactoring
- remove default parameter
- better read_file and unit test for it
- add
utility::cdn_host
constant andutility::avatar_size
📚 Documentation
- move around the note in the repl page to be above the fold
- add image for repl page
- fix missing bracket
- update FAQ and add page documenting how to run a dpp bot in repl.it
- docs fix wording
Thank you for using D++!
v9.0.16 release
We are happy to announce the release of D++ 9.0.16! This version adds support for the newest Discord API features including member timeout, for when you really want your bot to stick a user in the sin-bin and leave dealing with it to Discord.
It also adds support for interaction locale fields, and some quality of life fixes for event routers.
There is experimental support for modal dialogs, but this is not yet available for general use by Discord and will be released in due course. For more information of this stay up to date with developments on our support server!
The changelog is listed below:
Release Changelog
✨ New Features
- add moderate members permission
- add interaction locales
- added messages. this was missing for context menu actions i think
- added user context menu example
- add DPP_EXPORT stanza to
find_guild_member()
- operator
bool()
forevent_router_t
on_form_submit
event for modal dialogs- add comments and helper functions
- experimental; modal dialog interactions
🐞 Bug Fixes
- improve shard ready message
- ctor for collector doesnt set owner
- openssl can return a successful read of 0 bytes. Don't bother calling
handle_buffer()
on this
♻️ Refactoring
- improved attachment example
- add size parameter to get_avatar_url of user and guild_member
💎 Style Changes
- remove some casts
📚 Documentation
- docs fix syntax and change event params to auto for simpler example
- add example of
collector::filter
- documentation for modal dialogs: experimental and subject to change
- added example on how to invite a bot
- fix typos in "Using Slash Commands and Interactions"
- fix context menu example
- fix for the code in the context menu example
- fix alignment of headers
- fix first-bot tutorial image
- fixed arrow size
Thank you for using D++!