aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAustin Hellyer <[email protected]>2016-11-27 19:52:58 -0800
committerAustin Hellyer <[email protected]>2016-11-27 19:53:56 -0800
commitc4636a1a715b6668904eacadc41d1022f16ae8a2 (patch)
tree0ca0727f56970aaaeba78d2f14f62e4e4266d824 /src
parentRe-export CreateEmbedFooter (diff)
downloadserenity-c4636a1a715b6668904eacadc41d1022f16ae8a2.tar.xz
serenity-c4636a1a715b6668904eacadc41d1022f16ae8a2.zip
Correctly track Cache's unavailable guilds
When a guild delete is received, add its Id to the unavailable guild list, and when a create is received, remove it.
Diffstat (limited to 'src')
-rw-r--r--src/ext/cache/mod.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/ext/cache/mod.rs b/src/ext/cache/mod.rs
index 923c55a..d07f7a6 100644
--- a/src/ext/cache/mod.rs
+++ b/src/ext/cache/mod.rs
@@ -722,12 +722,18 @@ impl Cache {
#[doc(hidden)]
pub fn update_with_guild_create(&mut self, event: &GuildCreateEvent) {
+ self.unavailable_guilds.retain(|guild_id| *guild_id != event.guild.id);
+
self.guilds.insert(event.guild.id, event.guild.clone());
}
#[doc(hidden)]
pub fn update_with_guild_delete(&mut self, event: &GuildDeleteEvent)
-> Option<Guild> {
+ if !self.unavailable_guilds.contains(&event.guild.id) {
+ self.unavailable_guilds.push(event.guild.id);
+ }
+
self.guilds.remove(&event.guild.id)
}