From 64e056610b6209e5e84e33e00a77dbe41ee2e339 Mon Sep 17 00:00:00 2001 From: niansa Date: Tue, 10 Jan 2023 17:58:43 +0100 Subject: [PATCH] Make sure presence client status is object --- main.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/main.cpp b/main.cpp index 0801da3..b4382b7 100644 --- a/main.cpp +++ b/main.cpp @@ -458,7 +458,7 @@ protected: bool is_online; { const auto& client_status = data["client_status"]; - if (client_status.isArray() && !client_status.getMemberNames().empty()) { + if (client_status.isObject() && !client_status.empty()) { const auto device = client_status.getMemberNames()[0]; status_str = "[\""+client_status[device].asString()+"\", \""+device+"\"]"; is_online = true; @@ -520,14 +520,20 @@ protected: } else if (intent == "CHANNEL_UPDATE") [[unlikely]] { if (cache.store(data).changed) cache.store(std::move(data)); } else if (intent == "CHANNEL_DELETE") [[unlikely]] { - insertChannelDelete(data["id"]); + const auto& guild_id = data["guild_id"]; + if (guild_id.isString()) { + insertChannelDelete(guild_id); + } } else if (intent == "GUILD_MEMBER_ADD" || intent == "GUILD_MEMBER_UDATE") [[unlikely]] { auto guild_id = std::move(data["guild_id"]); updateMember(std::move(data), guild_id.asString()); } else if (intent == "GUILD_MEMBER_REMOVE") [[unlikely]] { - const auto& user_data = cache.store(data["user"]).data; - insertMemberDelete(user_data["id"], data["guild_id"]); + const auto& user_data = data["user"]; + if (user_data["username"].isString()) { + cache.store(user_data); + insertMemberDelete(user_data["id"], data["guild_id"]); + } } else if (intent == "VOICE_STATE_UPDATE") { updateMemberVoiceConnection(std::move(data)); @@ -563,7 +569,7 @@ int main(int argc, char **argv) { // Set up client auto client = std::make_shared(io, Discord::Settings{ .bot_token = argv[1], - .intents = Discord::intents::all, + .intents = Discord::intents::all & ~Discord::intents::direct_messages, .is_bot = false }); client->detach();