summaryrefslogtreecommitdiff
path: root/discord/discord.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'discord/discord.cpp')
-rw-r--r--discord/discord.cpp12
1 files changed, 10 insertions, 2 deletions
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;
+}