summaryrefslogtreecommitdiff
path: root/discord/discord.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'discord/discord.cpp')
-rw-r--r--discord/discord.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/discord/discord.cpp b/discord/discord.cpp
index 73b03a3..298bb8a 100644
--- a/discord/discord.cpp
+++ b/discord/discord.cpp
@@ -519,6 +519,9 @@ void DiscordClient::HandleGatewayMessage(std::string str) {
case GatewayEvent::GUILD_MEMBER_UPDATE: {
HandleGatewayGuildMemberUpdate(m);
} break;
+ case GatewayEvent::PRESENCE_UPDATE: {
+ HandleGatewayPresenceUpdate(m);
+ } break;
}
} break;
default:
@@ -600,6 +603,12 @@ void DiscordClient::HandleGatewayGuildMemberUpdate(const GatewayMessage &msg) {
m_store.SetGuildMemberData(data.GuildID, data.User.ID, member);
}
+void DiscordClient::HandleGatewayPresenceUpdate(const GatewayMessage &msg) {
+ PresenceUpdateMessage data = msg.Data;
+ auto cur = m_store.GetUser(data.User.at("id").get<Snowflake>());
+ User::update_from_json(data.User, *cur);
+}
+
void DiscordClient::HandleGatewayMessageUpdate(const GatewayMessage &msg) {
Snowflake id = msg.Data.at("id");
@@ -728,6 +737,7 @@ void DiscordClient::LoadEventMap() {
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;
+ m_event_map["PRESENCE_UPDATE"] = GatewayEvent::PRESENCE_UPDATE;
}
DiscordClient::type_signal_gateway_ready DiscordClient::signal_gateway_ready() {