From 42252aa6aa1450f8d1b3b2b134eae8c96c58442f Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Mon, 18 Jan 2021 01:34:47 -0500 Subject: some better member/role update handling --- discord/discord.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'discord/discord.cpp') diff --git a/discord/discord.cpp b/discord/discord.cpp index a3acd2a..73c7614 100644 --- a/discord/discord.cpp +++ b/discord/discord.cpp @@ -735,8 +735,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.SetGuildMember(data.GuildID, data.User.ID, member); + auto cur = m_store.GetGuildMember(data.GuildID, data.User.ID); + if (cur.has_value()) { + cur->update_from_json(msg.Data); + m_store.SetGuildMember(data.GuildID, data.User.ID, *cur); + } + m_signal_guild_member_update.emit(data.GuildID, data.User.ID); } void DiscordClient::HandleGatewayPresenceUpdate(const GatewayMessage &msg) { @@ -1224,3 +1228,7 @@ DiscordClient::type_signal_reaction_remove DiscordClient::signal_reaction_remove DiscordClient::type_signal_typing_start DiscordClient::signal_typing_start() { return m_signal_typing_start; } + +DiscordClient::type_signal_guild_member_update DiscordClient::signal_guild_member_update() { + return m_signal_guild_member_update; +} -- cgit v1.2.3