feat(api): also clear cache when leaving a guild
This commit is contained in:
parent
5c57b75335
commit
439051999f
10 changed files with 53 additions and 0 deletions
|
|
@ -81,4 +81,17 @@ public class ChannelCache
|
|||
.Select(id => _channels.GetValueOrDefault(id))
|
||||
.Where(c => c != null)
|
||||
.Select(c => c!);
|
||||
|
||||
public void RemoveGuild(Snowflake guildId)
|
||||
{
|
||||
if (!_guildChannels.TryGetValue(guildId, out var channelIds))
|
||||
return;
|
||||
|
||||
foreach (var id in channelIds)
|
||||
{
|
||||
_channels.Remove(id, out _);
|
||||
}
|
||||
|
||||
_guildChannels.Remove(guildId, out _);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,4 +30,6 @@ public class EmojiCache
|
|||
_emojis.TryGetValue(guildId, out emoji);
|
||||
|
||||
public int Size => _emojis.Select(kv => kv.Value.Count).Sum();
|
||||
|
||||
public bool Remove(Snowflake guildId) => _emojis.Remove(guildId, out _);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,4 +34,10 @@ public class InMemoryInviteCache : IInviteCache
|
|||
_invites[guildId] = invites;
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task RemoveAsync(Snowflake guildId)
|
||||
{
|
||||
_invites.Remove(guildId, out _);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -145,4 +145,13 @@ public class InMemoryMemberCache(IDiscordRestGuildAPI guildApi, ILogger logger)
|
|||
) => Task.FromResult<IEnumerable<(string, string)>>([]);
|
||||
|
||||
public Task TryRemoveMemberNameAsync(Snowflake guildId, string username) => Task.CompletedTask;
|
||||
|
||||
public Task RemoveAllMembersAsync(Snowflake guildId)
|
||||
{
|
||||
foreach (var kv in _members.Where(kv => kv.Key.GuildId == guildId))
|
||||
_members.Remove(kv.Key, out _);
|
||||
|
||||
_guilds.Remove(guildId, out _);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue