This commit is contained in:
fluttershy 2025-01-26 17:34:10 +05:00
parent 99cf38cf12
commit a32954453b
5 changed files with 26 additions and 11 deletions

View File

@ -1,5 +1,5 @@
#ifndef INCLUDE_NET_HPP_ #ifndef INCLUDE_NET_HPP_
#define INCLUDE_NET_HPP_ #define INCLUDE_NET_HPP_
#include <gateway/Websocket.hpp> #include <gateway/websocket.hpp>
#include <network/Network.hpp> #include <network/network.hpp>
#endif #endif

View File

@ -6,7 +6,7 @@
class EventEmitter { class EventEmitter {
private: private:
using eventHandlers = std::function<void(const nlohmann::json&)>; using eventHandlers = std::function<void(const nlohmann::json&)>;
std::unordered_map<std::string, std::list<eventHandlers>> handlers; std::unordered_map<std::string, std::vector<eventHandlers>> handlers;
protected: protected:
void emit(const std::string& event, const nlohmann::json& data) { void emit(const std::string& event, const nlohmann::json& data) {
if (handlers.find(event) != handlers.end()) { if (handlers.find(event) != handlers.end()) {
@ -80,8 +80,8 @@ private:
case ix::WebSocketMessageType::Message: case ix::WebSocketMessageType::Message:
res = nlohmann::json::parse(msg->str); res = nlohmann::json::parse(msg->str);
Log::create(INFO, WEBSOCKET, res["op"].dump() + " " + res["t"].dump()); Log::create(INFO, WEBSOCKET, res["op"].dump() + " " + res["t"].dump());
switch (res["op"].get<int>()) { switch (res["op"].get<GatewayOpcodes>()) {
case 10: case GatewayOpcodes::Hello:
heartbeat_interval = res["d"]["heartbeat_interval"].get<int>(); heartbeat_interval = res["d"]["heartbeat_interval"].get<int>();
!connected ? connected = true, webSocket.send(id.dump()) : 0; !connected ? connected = true, webSocket.send(id.dump()) : 0;
std::thread([this, &heartbeat_interval, &connected]() { std::thread([this, &heartbeat_interval, &connected]() {
@ -92,7 +92,11 @@ private:
} }
}).detach(); }).detach();
break; break;
case 0: emit(res["t"].get<std::string>(), res); break; case GatewayOpcodes::Dispatch:
emit(res["t"].get<std::string>(), res);
break;
default:
break;
} }
break; break;
case ix::WebSocketMessageType::Error: case ix::WebSocketMessageType::Error:

View File

@ -1,7 +1,7 @@
#ifndef TLS_NETWORK_HPP_ #ifndef TLS_NETWORK_HPP_
#define TLS_NETWORK_HPP_ #define TLS_NETWORK_HPP_
#include <includes.hpp> #include <includes.hpp>
#include <gateway/Websocket.hpp> #include <gateway/websocket.hpp>
#include <curl/curl.h> #include <curl/curl.h>
class NetworkManager { class NetworkManager {
private: private:

View File

@ -140,4 +140,18 @@ enum UserStatus {
enum DiscordTime { enum DiscordTime {
Epoch = 1420070400000, Epoch = 1420070400000,
}; };
enum GatewayOpcodes {
Dispatch,
Heartbeat,
Identify,
PresenceUpdate,
VoiceStateUpdate,
Resume = 6,
Reconnect,
RequestGuildMembers,
InvalidSession,
Hello,
HeartbeatACK,
RequestSoundboardSounds = 31,
};
#endif #endif

View File

@ -39,10 +39,7 @@ int main(int argc, char* argv[]) {
message->send("939957962972229634", message->pack("content", author->channel_id)); message->send("939957962972229634", message->pack("content", author->channel_id));
} }
}); });
bot->on(GatewayEvents::MESSAGE_REACTION_ADD, [](const Discord<Message>& msg) {
const auto& [message] = msg.ctx();
message->send("939957962972229634", message->pack("content", "test"));
});
bot->start(); bot->start();
return 0; return 0;
} }