• Stars
    star
    882
  • Rank 49,671 (Top 2 %)
  • Language
    C++
  • License
    Apache License 2.0
  • Created about 3 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

An incredibly lightweight C++ Discord library


Discord Downloads Codacy Badge OpenSSF Best Practices D++ CI OpenSSF Scorecard AUR version vcpkg 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)
  • 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.

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

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 (whichever -dev package comes with your OS)
  • zlib (whichever -dev package comes with your OS)

Optional Dependencies

For voice support you require both of:

Included Dependencies (Packaged with the library)

More Repositories

1

windows-bot-template

A D++ Discord Bot template for Visual Studio 2022 (Windows x64 and x86) - Ready to go, just add your code!
C++
40
star
2

retro-rocket

Retro Rocket BASIC Powered Operating System
C
35
star
3

sporks

The source code repository for Sporks, the learning, backchatting, scriptable discord bot!
C
32
star
4

triviabot

A Discord Trivia/Quiz bot with over 150,000 questions and lots of features!
C++
31
star
5

templatebot

CMake template for a simple D++ bot.
CMake
6
star
6

tutorials-and-howto

A selection of tutorials and how-to documents I've made that others may find useful
5
star
7

command_example

An example of splitting slash commands into separate files using D++
C++
4
star
8

beholder

The Beholder Bot - Block Bad Images on Discord!
C++
4
star
9

ssod

Seven Spells Of Destruction
C
3
star
10

musicbot

A simple and effective D++ powered music bot for streaming local music on Discord
C++
3
star
11

dpp-cross-compiles

cross compilation dependencies for D++
2
star
12

dpp-web

DPP Website
2
star
13

self-hosted-runner

Self Hosted Runner for Raspberry Pi
Dockerfile
2
star
14

irc-defender

IRC Defender was a malware/bot detector for IRC networks. This is deprecated, non-maintained and listed only for historical purposes. Do not run this in production!
Perl
2
star
15

botnix

A highly modular IRC bot with ipv6, SSL and multi network support
Perl
1
star
16

dpp-old-web

JavaScript
1
star
17

botnix-discord

Discord connector for the botnix IRC bot
PHP
1
star
18

dpp-comments

Utteranc.es comments for dpp.dev
1
star
19

evalbot

D++ Evaluator bot
C++
1
star
20

mc-antigrief

Brainbox Minecraft Anti-Grief Plugin
Java
1
star
21

self-hosted-runner-mac

Self Hosted Runner for Mac OS
Objective-C
1
star