diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-10-13 02:05:59 -0400 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-10-13 02:05:59 -0400 |
commit | c17842c16f10f55f2f0923e94033a482ef98838e (patch) | |
tree | 58888e4401fa23b2ea231e591367cd1c1a8cf73b /discord | |
parent | f29cfc69519593017986f3b969ad62f9b8672375 (diff) | |
download | abaddon-portaudio-c17842c16f10f55f2f0923e94033a482ef98838e.tar.gz abaddon-portaudio-c17842c16f10f55f2f0923e94033a482ef98838e.zip |
handle GUILD_MEMBER_UPDATE
Diffstat (limited to 'discord')
-rw-r--r-- | discord/discord.cpp | 10 | ||||
-rw-r--r-- | discord/discord.hpp | 1 | ||||
-rw-r--r-- | discord/member.cpp | 10 | ||||
-rw-r--r-- | discord/member.hpp | 1 | ||||
-rw-r--r-- | discord/objects.cpp | 8 | ||||
-rw-r--r-- | discord/objects.hpp | 12 |
6 files changed, 42 insertions, 0 deletions
diff --git a/discord/discord.cpp b/discord/discord.cpp index 725f76f..73b03a3 100644 --- a/discord/discord.cpp +++ b/discord/discord.cpp @@ -516,6 +516,9 @@ void DiscordClient::HandleGatewayMessage(std::string str) { case GatewayEvent::MESSAGE_DELETE_BULK: { HandleGatewayMessageDeleteBulk(m); } break; + case GatewayEvent::GUILD_MEMBER_UPDATE: { + HandleGatewayGuildMemberUpdate(m); + } break; } } break; default: @@ -591,6 +594,12 @@ void DiscordClient::HandleGatewayMessageDeleteBulk(const GatewayMessage &msg) { } } +void DiscordClient::HandleGatewayGuildMemberUpdate(const GatewayMessage &msg) { + GuildMemberUpdateMessage data = msg.Data; + auto member = GuildMember::from_update_json(msg.Data); // meh + m_store.SetGuildMemberData(data.GuildID, data.User.ID, member); +} + void DiscordClient::HandleGatewayMessageUpdate(const GatewayMessage &msg) { Snowflake id = msg.Data.at("id"); @@ -718,6 +727,7 @@ void DiscordClient::LoadEventMap() { m_event_map["GUILD_CREATE"] = GatewayEvent::GUILD_CREATE; m_event_map["GUILD_DELETE"] = GatewayEvent::GUILD_DELETE; m_event_map["MESSAGE_DELETE_BULK"] = GatewayEvent::MESSAGE_DELETE_BULK; + m_event_map["GUILD_MEMBER_UPDATE"] = GatewayEvent::GUILD_MEMBER_UPDATE; } DiscordClient::type_signal_gateway_ready DiscordClient::signal_gateway_ready() { diff --git a/discord/discord.hpp b/discord/discord.hpp index 5bfb29a..d479433 100644 --- a/discord/discord.hpp +++ b/discord/discord.hpp @@ -123,6 +123,7 @@ private: void HandleGatewayGuildCreate(const GatewayMessage &msg); void HandleGatewayGuildDelete(const GatewayMessage &msg); void HandleGatewayMessageDeleteBulk(const GatewayMessage &msg); + void HandleGatewayGuildMemberUpdate(const GatewayMessage &msg); void HeartbeatThread(); void SendIdentify(); diff --git a/discord/member.cpp b/discord/member.cpp index 9452695..35e7c93 100644 --- a/discord/member.cpp +++ b/discord/member.cpp @@ -9,3 +9,13 @@ void from_json(const nlohmann::json &j, GuildMember &m) { JS_D("deaf", m.IsDeafened); JS_D("mute", m.IsMuted); } + +GuildMember GuildMember::from_update_json(const nlohmann::json &j) { + GuildMember ret; + JS_D("roles", ret.Roles); + JS_D("user", ret.User); + JS_ON("nick", ret.Nickname); + JS_D("joined_at", ret.JoinedAt); + JS_ON("premium_since", ret.PremiumSince); + return ret; +} diff --git a/discord/member.hpp b/discord/member.hpp index 4ff84fc..0b7e0d6 100644 --- a/discord/member.hpp +++ b/discord/member.hpp @@ -15,4 +15,5 @@ struct GuildMember { bool IsMuted; // friend void from_json(const nlohmann::json &j, GuildMember &m); + static GuildMember from_update_json(const nlohmann::json &j); }; diff --git a/discord/objects.cpp b/discord/objects.cpp index 76de515..c3f1e4f 100644 --- a/discord/objects.cpp +++ b/discord/objects.cpp @@ -133,3 +133,11 @@ void to_json(nlohmann::json &j, const MessageEditObject &m) { if (m.Flags != -1) j["flags"] = m.Flags; } + +void from_json(const nlohmann::json &j, GuildMemberUpdateMessage &m) { + JS_D("guild_id", m.GuildID); + JS_D("roles", m.Roles); + JS_D("user", m.User); + JS_ON("nick", m.Nick); + JS_D("joined_at", m.JoinedAt); +} diff --git a/discord/objects.hpp b/discord/objects.hpp index 43182a6..602991b 100644 --- a/discord/objects.hpp +++ b/discord/objects.hpp @@ -35,6 +35,7 @@ enum class GatewayEvent : int { GUILD_CREATE, GUILD_DELETE, MESSAGE_DELETE_BULK, + GUILD_MEMBER_UPDATE, }; struct GatewayMessage { @@ -189,3 +190,14 @@ struct MessageEditObject { friend void to_json(nlohmann::json &j, const MessageEditObject &m); }; + +struct GuildMemberUpdateMessage { + Snowflake GuildID; // + std::vector<Snowflake> Roles; // + User User; // + std::string Nick; // opt, null + std::string JoinedAt; + std::string PremiumSince; // opt, null + + friend void from_json(const nlohmann::json &j, GuildMemberUpdateMessage &m); +}; |