sparkle/sources/main.cpp
2025-01-31 13:04:37 +05:00

48 lines
1.6 KiB
C++

#include <api.hpp>
#include <includes.hpp>
#include <cxxopts.hpp>
int main(int argc, char* argv[]) {
cxxopts::Options options("sparkle", "WIP discord bot library in C++");
options.add_options()
("h,help", "Print help")
("V,version", "Show version information")
("t,token", "Discord bot token", cxxopts::value<std::string>());
auto result = options.parse(argc, argv);
if (result.count("version")) {
std::cout << "sparkle version 0.3" << std::endl;
return 0;
}
if (result.count("help")) {
std::cout << options.help() << std::endl;
return 0;
}
if (!result.count("token")) {
std::cout << "\033[31mError: no token provided.\033[0m" << std::endl;
std::cout << options.help() << std::endl;
return -1;
}
class WebSocket* bot = &WebSocket::getInstance(result["token"].as<std::string>(), GatewayIntents::AllIntents);
bot->on(GatewayEvents::READY, [](const Discord<User>& ctx) {
auto& [user] = ctx.ctx();
std::cout << std::boolalpha << user->isBot << std::endl;
std::cout << nlohmann::json::parse(user->me())["username"].get<std::string>() << std::endl;
});
bot->on(GatewayEvents::MESSAGE_CREATE, [bot](const Discord<Message, User, Author>& msg) {
auto& [message, user, author] = msg.ctx();
if (!author->isBot) {
message->send("939957962972229634", message->pack("content", std::to_string(user->isBot)));
bot->getEvents();
bot->sendPresenceUpdate(StatusType::DND, "meow", ActivityType::Listening);
}
});
bot->start();
return 0;
}