aboutsummaryrefslogtreecommitdiff
path: root/src/model
diff options
context:
space:
mode:
authorZeyla Hellyer <[email protected]>2018-04-25 21:37:54 -0700
committerZeyla Hellyer <[email protected]>2018-04-25 21:37:54 -0700
commitfd77a91f2ba7c782f3e0e67ecee19df17bb31e26 (patch)
tree63eba0d038dd3ab22f9ad70ac188a11a5882b880 /src/model
parentLog more information about failed deserializations (diff)
downloadserenity-fd77a91f2ba7c782f3e0e67ecee19df17bb31e26.tar.xz
serenity-fd77a91f2ba7c782f3e0e67ecee19df17bb31e26.zip
Fix "Guild Member Chunk" deserialization
Diffstat (limited to 'src/model')
-rw-r--r--src/model/event.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/model/event.rs b/src/model/event.rs
index c88a59c..04169a6 100644
--- a/src/model/event.rs
+++ b/src/model/event.rs
@@ -615,8 +615,17 @@ impl<'de> Deserialize<'de> for GuildMembersChunkEvent {
}
}
- let members: HashMap<UserId, Member> =
- Deserialize::deserialize(members).map_err(DeError::custom)?;
+ let members = serde_json::from_value::<Vec<Member>>(members)
+ .map(|members| members
+ .into_iter()
+ .fold(HashMap::new(), |mut acc, member| {
+ let id = member.user.read().id;
+
+ acc.insert(id, member);
+
+ acc
+ }))
+ .map_err(DeError::custom)?;
Ok(GuildMembersChunkEvent {
guild_id,