Skip to content

Latest commit

 

History

History
123 lines (85 loc) · 5.65 KB

README.md

File metadata and controls

123 lines (85 loc) · 5.65 KB

D++

An incredibly lightweight C++ Discord library

Discord Codacy Badge Lines of code D++ CI

D++ is a lightweight and efficient library for Discord written in modern C++. It is designed to cover as much of the API specification as possible and to have a 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 (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

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 a work in progress, generated from the code comments and markdown using Doxygen.

Example

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

#include <dpp/dpp.h>
 
const std::string    BOT_TOKEN = "add your token here";
const dpp::snowflake GUILD_ID  =  825407338755653642;
 
int main() {
    dpp::cluster bot(BOT_TOKEN);
 
    bot.on_interaction_create([](const dpp::interaction_create_t& event) {
         if (event.command.get_command_name() == "ping") {
             event.reply("Pong!");
         }
    });
 
    bot.on_ready([&bot](const dpp::ready_t& event) {
        if (dpp::run_once<struct register_bot_commands>()) {
            bot.guild_command_create(
                dpp::slashcommand("ping", "Ping pong!", bot.me.id),
                GUILD_ID
            );
        }
    });
 
    bot.start(false);
}

You can find more examples in our example page.

Supported Systems

The library runs great on Linux. Windows is also supported and we offer ready made compiled DLL and LIB files for easy integration into any windows visual studio 2019 or 2022 project. Mac OS X and FreeBSD is also functional and stable, as is running your bot on a Raspberry Pi - we offer a prebuilt .deb for ARM64, ARM6 and ARM7 to save on having to wait for it to compile.

If you are on windows, and just want to get started as quickly as possible, you should look at our Windows Bot Template repository. This repository can be cloned and will get you up and running in a matter of minutes, with a pre-built D++ in a ready to go project for Visual Studio 2019 and 2022.

The library may work fine in other operating systems too, 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! :)

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
  • 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:

Included Dependencies (Packaged with the library)