Compare commits

..

3 Commits

Author SHA1 Message Date
ab41d81b2d 01-03-wip
All checks were successful
Build / Build (push) Successful in 3m28s
2026-06-02 17:16:15 -04:00
01ee26b0f7 Fix readme typos 2026-06-01 00:32:24 -04:00
b2bab16422 01_02 2026-06-01 00:29:59 -04:00
7 changed files with 136 additions and 9 deletions

View File

@@ -17,4 +17,7 @@ foreach(cmake_file ${CMAKE_FILES})
endforeach() endforeach()
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/00_project") add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/00_project")
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/01_basics/01_first_bot") add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/01_basics/01_first_bot")
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/01_basics/02_embeds")
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/01_basics/03_private_messages")

View File

@@ -6,7 +6,7 @@ This repo is a collection of examples for dpp, a cpp discord library.
The majority of the examples have come from [these docs](https://dpp.dev/example-programs.html). The majority of the examples have come from [these docs](https://dpp.dev/example-programs.html).
This repo more or less exists for me to learn how the library works through following the docs as well as to keep all the examples in one place for others to find and learn from. This repo more or less exists for me to learn how the library works through following the docs as well as to keep all the examples in one place for others to find and learn from.
With that all in mind, I've gone through and add comments *after* going through the doc page into the example itself. With that all in mind, I've gone through and added comments *after* going through the doc page into the example itself.
This is mostly for me to reiterate over the code to better understand it and put it into my own words, but should also serve as a fairly quick reference to how and what is going on for those wanting to learn without a bunch of reading. This is mostly for me to reiterate over the code to better understand it and put it into my own words, but should also serve as a fairly quick reference to how and what is going on for those wanting to learn without a bunch of reading.
The docs themselves contain a lot lot more information then what I have put into comments, so if you're stuck or want to know more, make sure you check them out. The docs themselves contain a lot lot more information then what I have put into comments, so if you're stuck or want to know more, make sure you check them out.
@@ -97,9 +97,7 @@ A "build" and a "bin" folder.
*Note: the bin folder will only exist on unix based systems (Linux, MacOS, etc)* *Note: the bin folder will only exist on unix based systems (Linux, MacOS, etc)*
The "build" folder will contain all of your build intermediaries. The "build" folder will contain all of your build intermediaries.
"Bin" will contain your actual executables. "Bin" will contain your actual executables.
```
```
``` ```
root root
├── build ├── build
@@ -108,9 +106,6 @@ root
│   ├── Release │   ├── Release
│   └── Relwithdeb │   └── Relwithdeb
``` ```
```
```
## Contributing ## Contributing

View File

@@ -0,0 +1,15 @@
cmake_minimum_required(VERSION 3.28)
project(dppbots)
set(example_name "01_02_embeds")
message("Setting up ${example_name}")
add_executable(${example_name} "${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp")
target_include_directories(${example_name} PUBLIC
"${dpp_SOURCE_DIR}/include"
"${dotenv-cpp_SOURCE_DIR}/include/laserpants"
)
target_link_libraries(${example_name}
dpp
dotenv
)
SET_OUTPUT_NAMES(${example_name})

View File

@@ -0,0 +1,82 @@
#include <cluster.h>
#include <colors.h>
#include <dispatcher.h>
#include <dotenv/dotenv.h>
#include <dpp/dpp.h>
#include <message.h>
#include <once.h>
#include <cstdlib>
int main() {
// Load in the .env file
dotenv::init();
// Get the discord token from the environment
std::string botToken = std::getenv("DISCORD_TOKEN");
// Create a bot cluster
dpp::cluster bot(botToken);
// Set the bot logging callback to a default cout logger
bot.on_log(dpp::utility::cout_logger());
// Set the slashcommand callback
bot.on_slashcommand([&bot](const dpp::slashcommand_t& event) {
// Filter the slashcommand by name
if (event.command.get_command_name() == "embed") {
// Create the embed object
dpp::embed embed =
dpp::embed()
// Set the color of the embed
// This sets the color of the line
// on the left side
.set_color(dpp::colors::sti_blue)
// Set the title
.set_title("Title")
// Set the title url
.set_url("https://dpp.dev")
// Set the author info
.set_author("Firewire", "https://dpp.dev",
"https://dpp.dev/DPP-Logo.png")
.set_description("Description")
// Set the thumbnail, this is a small image off the right
.set_thumbnail("https://dpp.dev/DPP-Logo.png")
// Add some regular and inline fields
.add_field("Regular field title", "Value")
.add_field("Inline field title", "Value", true)
.add_field("Inline field title", "Value", true)
// Set the main image, this will be the center large image
.set_image("https://dpp.dev/DPP-Logo.png")
// Set the footer
.set_footer(dpp::embed_footer()
.set_text("Footer text")
.set_icon("https://dpp.dev/DPP-Logo.png"))
// Add a timestamp,
// time(<arg>) returns a timer of <arg> seconds
// using a 0 for the arg just returns the current time
.set_timestamp(time(0));
// Create a message using the embed
dpp::message msg(event.command.channel_id, embed);
// Send the message as a reply
event.reply(msg);
}
});
// Set the bot on_ready to create a the global commands
bot.on_ready([&bot](const dpp::ready_t& event) {
// Only run the register_bot_commands once
// (If the bot is disconnected from the discord gateway,
// on_ready() is called once reconnected.
// We dont want to re-register when this happens)
if (dpp::run_once<struct register_bot_commands>()) {
bot.global_command_create(
dpp::slashcommand("embed", "Send an embed", bot.me.id));
}
});
// Start the bot
bot.start(dpp::st_wait);
return 0;
}

View File

@@ -0,0 +1,15 @@
cmake_minimum_required(VERSION 3.28)
project(dppbots)
set(example_name "01_03_private_messages")
message("Setting up ${example_name}")
add_executable(${example_name} "${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp")
target_include_directories(${example_name} PUBLIC
"${dpp_SOURCE_DIR}/include"
"${dotenv-cpp_SOURCE_DIR}/include/laserpants"
)
target_link_libraries(${example_name}
dpp
dotenv
)
SET_OUTPUT_NAMES(${example_name})

View File

@@ -0,0 +1,19 @@
#include <cluster.h>
#include <dispatcher.h>
#include <dotenv/dotenv.h>
#include <dpp/dpp.h>
#include <cstdlib>
int main() {
dotenv::init();
std::string botToken = std::getenv("DISCORD_BOT");
dpp::cluster bot(botToken);
bot.on_log(dpp::utility::cout_logger());
bot.start(dpp::st_wait);
return 0;
}

View File

@@ -1,6 +1,4 @@
├── 01_basics ├── 01_basics
│   ├── 02_embeds
│   ├── 03_private_messages
│   ├── 04_adding_files │   ├── 04_adding_files
│   ├── 05_webhooks │   ├── 05_webhooks
│   ├── 06_callback_functions │   ├── 06_callback_functions