diff --git a/README.md b/README.md index dec41e3..37ae905 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ # Sparkle Library for creating Discord bots. - ## How to Build - ### Required Libraries - `curl` - `ixwebsocket` @@ -25,4 +23,4 @@ build/sparkle -t - [ ] Interactions - [ ] Tests # -![](fluttershy.gif) \ No newline at end of file +![](res/fluttershy.gif) \ No newline at end of file diff --git a/libs/network/websocket.cpp b/libs/network/websocket.cpp index 0b85813..9d0fed4 100644 --- a/libs/network/websocket.cpp +++ b/libs/network/websocket.cpp @@ -27,11 +27,11 @@ void EventEmitter::once(const std::string& event, const eventHandlers& handler) handlers[event].emplace_back(std::move(wrappedHandler)); } void EventEmitter::off(const std::string& event, eventHandlers handler) { - if (auto it = handlers.find(event); it != handlers.end()) { + if (auto it = handlers.find(event); it != handlers.cend()) { auto& vec = it->second; vec.erase(std::ranges::remove_if(vec, [&handler](const eventHandlers& h) { return h.target() == handler.target(); - }).begin(), vec.end()); + }).begin(), vec.cend()); } } WebSocket::WebSocket(const std::string& token, int intents, bool isBot) : token(token), intents(intents), isBot(isBot) { @@ -71,7 +71,7 @@ WebSocket::WebSocket(const std::string& token, int intents, bool isBot) : token( switch (res["op"].get()) { case GatewayOpcodes::Hello: heartbeat_interval = res["d"]["heartbeat_interval"].get(); - !connected ? connected = true, webSocket.send(id.dump()) : false; + if (connected) connected = true; else webSocket.send(id.dump()); std::thread([this, &heartbeat_interval, &connected]() { while (connected && heartbeat_interval != -1) { Log::create(INFO, WEBSOCKET, "Heartbeat " + std::to_string(heartbeat_interval)); diff --git a/libs/network/websocket.hpp b/libs/network/websocket.hpp index 9e44e83..a276f18 100644 --- a/libs/network/websocket.hpp +++ b/libs/network/websocket.hpp @@ -26,8 +26,8 @@ private: const nlohmann::json payload = { {"op", GatewayOpcodes::Heartbeat}, {"d", nullptr} }; WebSocket(const std::string& token, int intents, bool isBot); public: - auto operator=(const WebSocket&)->WebSocket & = delete; - auto operator=(WebSocket&&)->WebSocket & = delete; + auto operator=(const WebSocket&)->WebSocket& = delete; + auto operator=(WebSocket&&)->WebSocket& = delete; WebSocket(WebSocket&&) = delete; WebSocket(const WebSocket&) = delete; _maybe_unused void sendPresenceUpdate(const char* statusType, const std::string& activityName, const int& activityType); diff --git a/fluttershy.gif b/res/fluttershy.gif similarity index 100% rename from fluttershy.gif rename to res/fluttershy.gif diff --git a/sources/main.cpp b/sources/main.cpp index 281be64..be9aca3 100644 --- a/sources/main.cpp +++ b/sources/main.cpp @@ -28,18 +28,16 @@ int main(int argc, char* argv[]) { class WebSocket* bot = &WebSocket::getInstance(result["token"].as(), GatewayIntents::AllIntents); - bot->on(GatewayEvents::READY, [](const Discord& ctx) { + bot->once(GatewayEvents::READY, [](const Discord& ctx) { auto& [user] = ctx.ctx(); std::cout << std::boolalpha << user->isBot << std::endl; std::cout << nlohmann::json::parse(user->me())["username"].get() << std::endl; }); - bot->on(GatewayEvents::MESSAGE_CREATE, [bot](const Discord& msg) { + bot->on(GatewayEvents::MESSAGE_CREATE, [](const Discord& msg) { auto& [message, user, author] = msg.ctx(); if (!author->isBot) { message->send("1334963948767940648", message->pack("content", std::to_string(user->isBot))); - bot->getEvents(); - bot->sendPresenceUpdate(StatusType::DND, "meow", ActivityType::Listening); } }); diff --git a/tests/tests.cpp b/tests/tests.cpp index 9b586f2..4946c2c 100644 --- a/tests/tests.cpp +++ b/tests/tests.cpp @@ -1,9 +1,7 @@ -/* #include #include #include TEST(NetworkManagerTest, RequestReturnsExpectedValue) { NetworkManager& networkManager = NetworkManager::getInstance(); EXPECT_FALSE(networkManager.request(HttpMethods::POST, DiscordEndpoints::details::latest + "/channels/939957962972229634/messages", { "content", "test" }).empty()); -} -*/ \ No newline at end of file +} \ No newline at end of file