aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorCara Salter <cara@devcara.com>2023-03-30 12:52:19 -0400
committerCara Salter <cara@devcara.com>2023-03-30 12:52:19 -0400
commit527b7ab2df126bb2f480999049ed05b057a6ef83 (patch)
tree8edb7c72d7fae0e7d2c768f5f5dd65c2268c75a0 /src/main.cpp
parentc8befe7c95b18869f995c4f2cbc2f4cf9c91924f (diff)
download142bot-527b7ab2df126bb2f480999049ed05b057a6ef83.tar.gz
142bot-527b7ab2df126bb2f480999049ed05b057a6ef83.zip
modules!
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp62
1 files changed, 49 insertions, 13 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 6cdbd31..d58f474 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1,31 +1,67 @@
#include <dpp/dpp.h>
-#include "include/json.hpp"
+#include <dpp/json.h>
+#include <142bot/bot.hpp>
+
+#include <spdlog/spdlog.h>
+#include <spdlog/async.h>
+#include <spdlog/sinks/stdout_color_sinks.h>
+#include <spdlog/sinks/rotating_file_sink.h>
using namespace std;
using json = nlohmann::json;
int main(int argc, char const *argv[]) {
+
std::ifstream f("config.json");
json cfg = json::parse(f);
string token = cfg.value("token", "bad-token");
dpp::cluster bot(token, dpp::intents::i_all_intents);
- bot.on_log(dpp::utility::cout_logger());
+ std::shared_ptr<spdlog::logger> log;
+ spdlog::init_thread_pool(8192, 2);
+ std::vector<spdlog::sink_ptr> sinks;
+ auto stdout_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt >();
+ auto rotating = std::make_shared<spdlog::sinks::rotating_file_sink_mt>("142bot.log", 1024 * 1024 * 5, 10);
+ sinks.push_back(stdout_sink);
+ sinks.push_back(rotating);
+ log = std::make_shared<spdlog::async_logger>("logs", sinks.begin(), sinks.end(), spdlog::thread_pool(), spdlog::async_overflow_policy::block);
+ spdlog::register_logger(log);
+ log->set_pattern("%^%Y-%m-%d %H:%M:%S.%e [%L] [th#%t]%$ : %v");
+ log->set_level(spdlog::level::level_enum::debug);
+
+ /* Integrate spdlog logger to D++ log events */
+ bot.on_log([&bot, &log](const dpp::log_t & event) {
+ switch (event.severity) {
+ case dpp::ll_trace:
+ log->trace("{}", event.message);
+ break;
+ case dpp::ll_debug:
+ log->debug("{}", event.message);
+ break;
+ case dpp::ll_info:
+ log->info("{}", event.message);
+ break;
+ case dpp::ll_warning:
+ log->warn("{}", event.message);
+ break;
+ case dpp::ll_error:
+ log->error("{}", event.message);
+ break;
+ case dpp::ll_critical:
+ default:
+ log->critical("{}", event.message);
+ break;
+ }
+ });
/* code */
- 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!", bot.me.id));
- }
- });
+ Bot client(0, &bot);
+
+ /* Attach events to the Bot class methods */
+ bot.on_message_create(std::bind(&Bot::onMessage, &client, std::placeholders::_1));
+ bot.on_ready(std::bind(&Bot::onReady, &client, std::placeholders::_1));
bot.start(dpp::st_wait);
return 0;