From 33ed25b2f66e727911182f1552aa8abfd558c69e Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Mon, 14 Dec 2020 01:40:22 -0500 Subject: add guild role update, create, delete events --- discord/discord.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'discord/discord.cpp') diff --git a/discord/discord.cpp b/discord/discord.cpp index ec58293..0c34944 100644 --- a/discord/discord.cpp +++ b/discord/discord.cpp @@ -542,6 +542,15 @@ void DiscordClient::HandleGatewayMessage(std::string str) { case GatewayEvent::GUILD_UPDATE: { HandleGatewayGuildUpdate(m); } break; + case GatewayEvent::GUILD_ROLE_UPDATE: { + HandleGatewayGuildRoleUpdate(m); + } break; + case GatewayEvent::GUILD_ROLE_CREATE: { + HandleGatewayGuildRoleCreate(m); + } break; + case GatewayEvent::GUILD_ROLE_DELETE: { + HandleGatewayGuildRoleDelete(m); + } break; } } break; default: @@ -703,6 +712,24 @@ void DiscordClient::HandleGatewayGuildUpdate(const GatewayMessage &msg) { m_signal_guild_update.emit(id); } +void DiscordClient::HandleGatewayGuildRoleUpdate(const GatewayMessage &msg) { + GuildRoleUpdateObject data = msg.Data; + m_store.SetRole(data.Role.ID, data.Role); + m_signal_role_update.emit(data.Role.ID); +} + +void DiscordClient::HandleGatewayGuildRoleCreate(const GatewayMessage &msg) { + GuildRoleCreateObject data = msg.Data; + m_store.SetRole(data.Role.ID, data.Role); + m_signal_role_create.emit(data.Role.ID); +} + +void DiscordClient::HandleGatewayGuildRoleDelete(const GatewayMessage &msg) { + GuildRoleDeleteObject data = msg.Data; + // todo: actually delete it + m_signal_role_delete.emit(data.RoleID); +} + void DiscordClient::HandleGatewayReconnect(const GatewayMessage &msg) { m_signal_disconnected.emit(true); inflateEnd(&m_zstream); @@ -875,6 +902,9 @@ void DiscordClient::LoadEventMap() { m_event_map["CHANNEL_UPDATE"] = GatewayEvent::CHANNEL_UPDATE; m_event_map["CHANNEL_CREATE"] = GatewayEvent::CHANNEL_CREATE; m_event_map["GUILD_UPDATE"] = GatewayEvent::GUILD_UPDATE; + m_event_map["GUILD_ROLE_UPDATE"] = GatewayEvent::GUILD_ROLE_UPDATE; + m_event_map["GUILD_ROLE_CREATE"] = GatewayEvent::GUILD_ROLE_CREATE; + m_event_map["GUILD_ROLE_DELETE"] = GatewayEvent::GUILD_ROLE_DELETE; } DiscordClient::type_signal_gateway_ready DiscordClient::signal_gateway_ready() { @@ -928,3 +958,15 @@ DiscordClient::type_signal_disconnected DiscordClient::signal_disconnected() { DiscordClient::type_signal_connected DiscordClient::signal_connected() { return m_signal_connected; } + +DiscordClient::type_signal_role_update DiscordClient::signal_role_update() { + return m_signal_role_update; +} + +DiscordClient::type_signal_role_create DiscordClient::signal_role_create() { + return m_signal_role_create; +} + +DiscordClient::type_signal_role_delete DiscordClient::signal_role_delete() { + return m_signal_role_delete; +} -- cgit v1.2.3