summaryrefslogtreecommitdiff
path: root/discord/discord.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'discord/discord.cpp')
-rw-r--r--discord/discord.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/discord/discord.cpp b/discord/discord.cpp
index 9f07259..a1b0e05 100644
--- a/discord/discord.cpp
+++ b/discord/discord.cpp
@@ -522,6 +522,9 @@ void DiscordClient::HandleGatewayMessage(std::string str) {
case GatewayEvent::CHANNEL_CREATE: {
HandleGatewayChannelCreate(m);
} break;
+ case GatewayEvent::GUILD_UPDATE: {
+ HandleGatewayGuildUpdate(m);
+ } break;
}
} break;
default:
@@ -639,6 +642,14 @@ void DiscordClient::HandleGatewayChannelCreate(const GatewayMessage &msg) {
m_signal_channel_create.emit(data.ID);
}
+void DiscordClient::HandleGatewayGuildUpdate(const GatewayMessage &msg) {
+ Snowflake id = msg.Data.at("id");
+ auto *current = m_store.GetGuild(id);
+ if (current == nullptr) return;
+ current->update_from_json(msg.Data);
+ m_signal_guild_update.emit(id);
+}
+
void DiscordClient::HandleGatewayMessageUpdate(const GatewayMessage &msg) {
Snowflake id = msg.Data.at("id");
@@ -771,6 +782,7 @@ void DiscordClient::LoadEventMap() {
m_event_map["CHANNEL_DELETE"] = GatewayEvent::CHANNEL_DELETE;
m_event_map["CHANNEL_UPDATE"] = GatewayEvent::CHANNEL_UPDATE;
m_event_map["CHANNEL_CREATE"] = GatewayEvent::CHANNEL_CREATE;
+ m_event_map["GUILD_UPDATE"] = GatewayEvent::GUILD_UPDATE;
}
DiscordClient::type_signal_gateway_ready DiscordClient::signal_gateway_ready() {
@@ -816,3 +828,7 @@ DiscordClient::type_signal_channel_update DiscordClient::signal_channel_update()
DiscordClient::type_signal_channel_create DiscordClient::signal_channel_create() {
return m_signal_channel_create;
}
+
+DiscordClient::type_signal_guild_update DiscordClient::signal_guild_update() {
+ return m_signal_guild_update;
+}