1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2025-01-19 12:07:13 +01:00
Sandu Liviu Catalin cbd8f8b028 Add D++ library.
2023-03-23 20:20:44 +02:00

3.6 KiB

\page build-a-discord-bot-linux-clion Building a discord bot in Linux using CLion

This tutorial teaches you how to create a working skeleton project you can build upon, using the JetBrains-IDE CLion.

\note This tutorial will use Ubuntu! You might use other Distros if you prefer, but keep in mind the setup process might be different!

Make sure you have CLion installed and works fine (run a hello-world program). You can download CLion here.

Setup a project

Create a new project. Select C++17 as the Language standard, or C++20 if you want something more recent.

We'll use the following file structure as a skeleton project you can build upon:

- your_project/
    |-- libs/
    |-- src/
        |-- main.cpp
    |-- CMakeLists.txt

Create the directories in your project and move the by CLion generated hello-world main.cpp in the src/ directory.

In the libs/ directory, clone D++ with: git clone https://github.com/brainboxdotcc/DPP.git. You can also clone spdlog into it if you need a logger.

Your project directory should look like this:

\image html build-clion-project-structure.png

Configure CMake file

Paste this CMake configuration in the CMakeLists.txt and adapt it according to your needs:

# minimum CMake version required
cmake_minimum_required(VERSION 3.15)
# Project name, version and description
project(discord-bot VERSION 1.0 DESCRIPTION "A discord bot")

# Add DPP as dependency
add_subdirectory(libs/DPP)
add_subdirectory(libs/spdlog) # if you need a logger. Don't forget to clone sources
                              # in the `libs/` directory

# Create an executable
add_executable(${PROJECT_NAME}
    src/main.cpp
    # your others files...
)

# Linking libraries
target_link_libraries(${PROJECT_NAME}
    dpp
    spdlog # Like before, if you need spdlog
)

# Specify includes
target_include_directories(${PROJECT_NAME} PRIVATE
    libs/DPP/include
    libs/spdlog/include # Like before, if you need spdlog
)

# Set C++ version
set_target_properties(${PROJECT_NAME} PROPERTIES
    CXX_STANDARD 17 # or 20 if you want something more recent
    CXX_STANDARD_REQUIRED ON
)

Then open the "File" menu and click on "Reload CMake Project" to reload the CMake configuration.

\image html build-clion-reload-cmake-project.png

Add an example program

The next step is to write the bot. Copy and paste the following example program in the main.cpp and set your bot token (see Creating a Bot Token):

#include <dpp/dpp.h>

const std::string    BOT_TOKEN    = "add your token here";

int main() {
    dpp::cluster bot(BOT_TOKEN);

    bot.on_log(dpp::utility::cout_logger());

    bot.on_slashcommand([](const dpp::slashcommand_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.global_command_create(
                dpp::slashcommand("ping", "Ping pong!", bot.me.id)
            );
        }
    });

    bot.start(dpp::st_wait);
}

Hit the green "Run" button in the top-right to run the bot.

Congratulations, you've successfully set up a bot!

Troubleshooting