diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-01-23 18:23:14 -0500 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-01-23 18:23:14 -0500 |
commit | fd72d91ceef0bba92fe886719b6e30e81f9ec838 (patch) | |
tree | 01ad325aeaf4b6b8f5443227cd94b8bfa7636819 /discord | |
parent | 04734e7e55366e3138f7d818f5267e76fbfa1041 (diff) | |
download | abaddon-portaudio-fd72d91ceef0bba92fe886719b6e30e81f9ec838.tar.gz abaddon-portaudio-fd72d91ceef0bba92fe886719b6e30e81f9ec838.zip |
handle merged_members in ready object
this way you dont have to load a channel to make the client aware of your permissions
Diffstat (limited to 'discord')
-rw-r--r-- | discord/discord.cpp | 12 | ||||
-rw-r--r-- | discord/member.cpp | 1 | ||||
-rw-r--r-- | discord/member.hpp | 1 | ||||
-rw-r--r-- | discord/objects.cpp | 1 | ||||
-rw-r--r-- | discord/objects.hpp | 1 |
5 files changed, 16 insertions, 0 deletions
diff --git a/discord/discord.cpp b/discord/discord.cpp index 03e7df3..75be116 100644 --- a/discord/discord.cpp +++ b/discord/discord.cpp @@ -780,15 +780,27 @@ void DiscordClient::HandleGatewayReady(const GatewayMessage &msg) { ProcessNewGuild(g); m_store.BeginTransaction(); + for (const auto &dm : data.PrivateChannels) { m_store.SetChannel(dm.ID, dm); if (dm.Recipients.has_value()) for (const auto &recipient : *dm.Recipients) m_store.SetUser(recipient.ID, recipient); } + if (data.Users.has_value()) for (const auto &user : *data.Users) m_store.SetUser(user.ID, user); + + if (data.MergedMembers.has_value()) { + for (int i = 0; i < data.MergedMembers->size(); i++) { + const auto guild_id = data.Guilds[i].ID; + for (const auto &member : data.MergedMembers.value()[i]) { + m_store.SetGuildMember(guild_id, *member.UserID, member); + } + } + } + m_store.EndTransaction(); m_session_id = data.SessionID; diff --git a/discord/member.cpp b/discord/member.cpp index 3fa1f71..fee007f 100644 --- a/discord/member.cpp +++ b/discord/member.cpp @@ -9,6 +9,7 @@ void from_json(const nlohmann::json &j, GuildMember &m) { JS_ON("premium_since", m.PremiumSince); JS_D("deaf", m.IsDeafened); JS_D("mute", m.IsMuted); + JS_O("user_id", m.UserID); } std::vector<RoleData> GuildMember::GetSortedRoles() const { diff --git a/discord/member.hpp b/discord/member.hpp index 8a9d609..5910f18 100644 --- a/discord/member.hpp +++ b/discord/member.hpp @@ -14,6 +14,7 @@ struct GuildMember { std::optional<std::string> PremiumSince; // null bool IsDeafened; bool IsMuted; + std::optional<Snowflake> UserID; // present in merged_members std::vector<RoleData> GetSortedRoles() const; diff --git a/discord/objects.cpp b/discord/objects.cpp index bcc7b04..4cc03e0 100644 --- a/discord/objects.cpp +++ b/discord/objects.cpp @@ -98,6 +98,7 @@ void from_json(const nlohmann::json &j, ReadyEventData &m) { JS_D("user_settings", m.Settings); JS_D("private_channels", m.PrivateChannels); JS_O("users", m.Users); + JS_ON("merged_members", m.MergedMembers); } void to_json(nlohmann::json &j, const IdentifyProperties &m) { diff --git a/discord/objects.hpp b/discord/objects.hpp index 6c04602..1f37ce9 100644 --- a/discord/objects.hpp +++ b/discord/objects.hpp @@ -170,6 +170,7 @@ struct ReadyEventData { std::optional<std::string> AnalyticsToken; std::optional<int> FriendSuggestionCount; UserSettings Settings; + std::optional<std::vector<std::vector<GuildMember>>> MergedMembers; // std::vector<Unknown> ConnectedAccounts; // opt // std::map<std::string, Unknown> Consents; // opt // std::vector<Unknown> Experiments; // opt |