handle UPDATE in GUILD_MEMBER_LIST_UPDATE

This commit is contained in:
ouwou
2021-02-28 01:44:31 -05:00
parent e81fdf1c36
commit 11358da24e
3 changed files with 19 additions and 6 deletions

View File

@@ -1303,7 +1303,7 @@ void DiscordClient::HandleGatewayGuildMemberListUpdate(const GatewayMessage &msg
for (const auto &op : data.Ops) {
if (op.Op == "SYNC") {
has_sync = true;
for (const auto &item : op.Items) {
for (const auto &item : *op.Items) {
if (item->Type == "member") {
auto member = static_cast<const GuildMemberListUpdateMessage::MemberItem *>(item.get());
m_store.SetUser(member->User.ID, member->User);
@@ -1322,6 +1322,12 @@ void DiscordClient::HandleGatewayGuildMemberListUpdate(const GatewayMessage &msg
}
}
}
} else if (op.Op == "UPDATE") {
if (op.OpItem.has_value() && op.OpItem.value()->Type == "member") {
const auto &m = static_cast<const GuildMemberListUpdateMessage::MemberItem *>(op.OpItem.value().get())->GetAsMemberData();
m_store.SetGuildMember(data.GuildID, m.User->ID, m);
m_signal_guild_member_update.emit(data.GuildID, m.User->ID); // cheeky
}
}
}