Description
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.
It is created by the developer of TriviaBot and contributed to by a dedicated team of developers.
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 (no other C++ Discord library has this!)
Slash Commands/Interactions support
Voice support (sending and receiving audio)
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
D++ alternatives and similar libraries
Based on the "Networking" category.
Alternatively, view DPP alternatives based on common mentions on social networks and blogs.
-
libcurl
A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features -
POCO
The POCO C++ Libraries are powerful cross-platform C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems. -
C++ REST SDK
The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services. -
RakNet
DISCONTINUED. RakNet is a cross platform, open source, C++ networking engine for game programmers. -
evpp
A modern C++ network library for developing high performance network services in TCP/UDP/HTTP protocols. -
Simple-Web-Server
DISCONTINUED. A very simple, fast, multithreaded, platform independent HTTP and HTTPS server and client library implemented using C++11 and Boost.Asio. Created to be an easy way to make REST resources available from C++ applications. -
wdt
DISCONTINUED. Warp speed Data Transfer (WDT) is an embeddedable library (and command line tool) aiming to transfer data between 2 systems as fast as possible over multiple TCP paths. -
PcapPlusPlus
PcapPlusPlus is a multiplatform C++ library for capturing, parsing and crafting of network packets. It is designed to be efficient, powerful and easy to use. It provides C++ wrappers for the most popular packet processing engines such as libpcap, Npcap, WinPcap, DPDK, AF_XDP and PF_RING. -
cpp-netlib
The C++ Network Library Project -- cross-platform, standards compliant networking library. -
Restbed
Corvusoft's Restbed framework brings asynchronous RESTful functionality to C++14 applications. -
Silicon
A high performance, middleware oriented C++14 http web framework please use matt-42/lithium instead -
Simple-WebSocket-Server
DISCONTINUED. A very simple, fast, multithreaded, platform independent WebSocket (WS) and WebSocket Secure (WSS) server and client library implemented using C++11, Boost.Asio and OpenSSL. Created to be an easy way to make WebSocket endpoints in C++. -
RESTinio
Cross-platform, efficient, customizable, and robust asynchronous HTTP(S)/WebSocket server C++ library with the right balance between performance and ease of use -
nope.c
WAFer is a C language-based software platform for scalable server-side and networking applications. Think node.js for C programmers. -
IXWebSocket
websocket and http client and server library, with TLS support and very few dependencies -
mailio
mailio is a cross platform C++ library for MIME format and SMTP, POP3 and IMAP protocols. It is based on standard C++ 17 and Boost library. -
QuantumGate
QuantumGate is a peer-to-peer (P2P) communications protocol, library and API written in C++. -
NetIF
Header-only C++14 library for getting addresses associated with network interfaces without name lookups on Windows, macOS, Linux, and FreeBSD
InfluxDB - Power Real-Time Data Analytics at Scale
![InfluxDB Logo InfluxDB Logo](https://cdn-b.libhunt.com/images/promo-campaign-images/000/000/021/main.png?1663900378)
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of D++ or a related project?
Popular Comparisons
README
An incredibly lightweight C++ Discord library
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)
- 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);
}
You can find more examples in our example page.
Supported Systems
Linux
The library runs ideally on Linux.
Mac OS X and FreeBSD
The library is well-functional and stable on Mac OS X and FreeBSD 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!
🤝 Contributing
Contributions, issues and feature requests are welcome. After cloning and setting up 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! :)
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
- AppleClang (12.0 or higher)
- Microsoft Visual Studio 2019 or 2022 (16.x/17.x)
- mingw-w64 (gcc version 8 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 (whichever
-dev
package comes with your OS) - zlib (whichever
-dev
package comes with your OS)
Optional Dependencies
For voice support you require both of: