DPP is a free, open source api development & testing project written in C++ and released under Apache-2.0. It has 1,391 GitHub stars, 210 forks and 12 open issues, and was last pushed 17 days ago. On this registry it ranks #83 of 103 tracked projects in API Development & Testing, with 5 head-to-head comparisons available. It gained 1 stars over the last 3 tracked days.

What is DPP?

What it is

DPP is a C++ Discord API bot library in the Discord bot development ecosystem. It is a lightweight, modern C++ library for building Discord bots, and it covers as much of the Discord API specification as possible while keeping a small memory footprint even when caching large amounts of data.

The project solves the problem of writing Discord bots in C++ without hand-coding every API call, websocket event, cache, shard, and interaction flow. It gives developers a single library for Discord API v10 work, including slash commands, interactions, voice, and efficient caching of guilds, channels, guild members, roles, and users.

Key capabilities

  • DPP supports Discord API v10 and exposes the entire Discord API through the library interface.
  • It provides efficient caching for guilds, channels, guild members, roles, and users, with a small memory footprint for large datasets.
  • It supports sharding and clustering, allowing many shards in one process and letting the developer specify shard counts or let the library decide.
  • It includes optimized ETF support for faster websocket throughput.
  • It supports slash commands and interactions, including a ping-pong style example for command registration and replies.
  • It supports voice sending and receiving with DAVE end-to-end encryption.
  • It provides stable Windows support and ready-made compiled packages for Windows, Raspberry Pi ARM64, ARM7, ARMv6, Debian x86/x64, and RPM-based distributions.

Who uses it and how

  • Developers use DPP to build Discord bots in C++ for small bots or large deployments with many guilds and users.
  • Bot operators use it to cache Discord data locally, which supports repeated access to guilds, channels, members, roles, and users.
  • Teams use it to run sharded or clustered bots when a single process needs to handle many shards.
  • Developers use it for interactive bots that respond to slash commands and other Discord interactions.
  • The README lists TriviaBot and Sporks bot as examples of bots using the library.

Getting started

Install DPP from source, use the documented examples, or select a ready-made package for supported platforms; available package channels mentioned in the badges include AUR, XBPS, vcpkg, Conan, and Homebrew. Docker is listed as a project topic, while hosted deployment is not mentioned.

When to use it — and when not to

Use DPP when a project needs a C++ Discord API bot library with Discord API v10 support, low memory footprint, caching, sharding, ETF websocket throughput, slash commands, and voice. Do not choose it when a hosted Discord bot service is required, because no hosted option is mentioned. The facts do not list built-in database, storage, SMTP, or paid-product replacement features, so those must be handled outside the library.

project readme (upstream, from github) — read inline

An incredibly lightweight C++ Discord library


Discord Downloads Codacy Badge OpenSSF Best Practices D++ CI OpenSSF Scorecard AUR version XBPS version vcpkg version Conan version Homebrew version Contributor Covenant


D++ is a lightweight and efficient library for Discord written in modern C++, covering as much of the API specification as possible with an incredibly small memory footprint even when caching large amounts of data.

Library Features

  • Support for Discord API v10
  • Really small memory footprint
  • Efficient caching system for guilds, channels, guild members, roles, users
  • Sharding and clustering (Many shards, one process: specify the number of shards, or let the library decide)
  • Highly optimised ETF (Erlang Term Format) support for very fast websocket throughput
  • Slash Commands/Interactions support
  • Voice support (sending and receiving audio) with DAVE End-To-End Encryption
  • The entire Discord API is available for use in the library
  • Stable Windows support
  • Ready-made compiled packages for Windows, Raspberry Pi (ARM64/ARM7/ARMv6), Debian x86/x64, and RPM based distributions
  • Highly scalable for large amounts of guilds and users

Want to help? Drop me a line or send a PR.

This library is in use on TriviaBot and Sporks bot and many other bots!

📚 Documentation

The documentation is constantly evolving and improving, generated from the code comments and markdown examples using Doxygen.

View the D++ library documentation

Example

This is a simple ping-pong example using slash commands.

#include <dpp/dpp.h>
#include <cstdlib>

int main() {
	dpp::cluster bot(std::getenv("BOT_TOKEN"));

	bot.on_slashcommand([](auto event) {
		if (event.command.get_command_name() == "ping") {
			event.reply("Pong!");
		}
	});

	bot.on_ready([&bot](auto event) {
		if (dpp::run_once<struct register_bot_commands>()) {
			bot.global_command_create(
				dpp::slashcommand("ping", "Ping pong!", bot.me.id)
			);
		}
	});

	bot.start(dpp::st_wait);
	return 0;
}

You can find more examples in our example page.

💻 Supported Systems

We support the following OS families, as long as they are still officially supported by their provider. We will provide no support for operating systems past end-of-life.

Linux

The library runs ideally on Linux.

Mac OS X, FreeBSD, and OpenBSD

The library is well-functional and stable on Mac OS X, FreeBSD, and OpenBSD too!

Raspberry Pi

For running your bot on a Raspberry Pi, we offer a prebuilt .deb package for ARM64, ARM6, and ARM7 so that you do not have to wait for it to compile.

Windows

Windows is well-supported with ready-made compiled DLL and LIB files, please check out our Windows Bot Template repository. The Windows Bot repository can be cloned and integrated immediately into any Visual Studio 2019 and 2022 project in a matter of minutes.

Other OS

The library should work fine on other operating systems as well, and if you run a D++ bot on something not listed here, please let us know!

🔰 Getting Started

Installation

D++ can be easily installed using various package managers. Please refer to our documentation for installation tutorials based on your preferred package manager.

Building from Source

If you prefer to build the library from source, detailed instructions are available here.

FAQ

For frequently asked questions and their answers, please visit our FAQ page.

Nightly Builds

If you prefer to use Nightly Builds (This is only if you know what you are doing!) then you can use either our master nightly builds or our dev nightly builds.

🤝 Contributing

Contributions, issues and feature requests are welcome. After cloning and setting up the project locally, you can just submit a PR to this repo and it will be deployed once it's accepted.

Please read the D++ Code Style Guide for more information on how we format pull requests.

💬 Get in touch

If you have various suggestions, questions or want to discuss things with our community, Join our discord server! Make a humorous reference to brains in your nickname to get access to a secret brain cult channel! :)

Discord

💕 Show your support

We love people's support in growing and improving. Be sure to leave a ⭐️ if you like the project and also be sure to contribute, if you're interested!

📂 Dependencies

Build requirements

  • cmake (version 3.13+)
  • A supported C++ compiler from the list below

Supported compilers

  • g++ (version 8 or higher)
  • clang (version 6 or higher)
  • AppleClang (12.0 or higher)
  • Microsoft Visual Studio 2019 or 2022 (16.x/17.x)
  • clang-cl (version 15 or higher)

Other compilers may work (either newer versions of those listed above, or different compilers entirely) but have not been tested by us.

External Dependencies (You must install these)

  • OpenSSL (For HTTPS, will use whichever -dev package comes with your OS)
  • zlib (For websocket compression, will use whichever -dev package comes with your OS)
Optional Dependencies

For voice support you require:

  • libopus (For audio encoding/decoding)
  • Note that our windows zips come packaged with copies of this library - you do not need to install it yourself!

Included Dependencies (Packaged with the library)

  • JSON for Modern C++ (You can bring your own nlohmann::json into D++ by setting a CMAKE flag)
  • MLS++ (This is statically compiled into the library if voice support is enabled)

Frequently asked questions

Is DPP free to use?

DPP is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does DPP do?

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

What is DPP written in?

DPP is primarily written in C++. Its source is publicly available at https://github.com/brainboxdotcc/DPP, and it has 1,391 GitHub stars.