feat: clean webhook cache upon leaving guild
This commit is contained in:
parent
2deac26fc8
commit
492283b9c1
4 changed files with 35 additions and 10 deletions
|
|
@ -130,14 +130,6 @@ public partial class GuildsController
|
|||
guildId
|
||||
);
|
||||
|
||||
// Clear out the caches for this guild
|
||||
guildCache.Remove(guildId, out _);
|
||||
emojiCache.Remove(guildId);
|
||||
channelCache.RemoveGuild(guildId);
|
||||
roleCache.RemoveGuild(guildId);
|
||||
await memberCache.RemoveAllMembersAsync(guildId);
|
||||
await inviteCache.RemoveAsync(guildId);
|
||||
|
||||
_logger.Information("Left guild {GuildId} and removed all data for it", guildId);
|
||||
|
||||
return Ok(export);
|
||||
|
|
|
|||
|
|
@ -36,8 +36,6 @@ public partial class GuildsController(
|
|||
GuildRepository guildRepository,
|
||||
InviteRepository inviteRepository,
|
||||
WatchlistRepository watchlistRepository,
|
||||
GuildCache guildCache,
|
||||
EmojiCache emojiCache,
|
||||
ChannelCache channelCache,
|
||||
RoleCache roleCache,
|
||||
IMemberCache memberCache,
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ public class GuildCreateResponder(
|
|||
RoleCache roleCache,
|
||||
IMemberCache memberCache,
|
||||
IInviteCache inviteCache,
|
||||
IWebhookCache webhookCache,
|
||||
WebhookExecutorService webhookExecutor,
|
||||
GuildFetchService guildFetchService
|
||||
) : IResponder<IGuildCreate>, IResponder<IGuildDelete>
|
||||
|
|
@ -114,6 +115,10 @@ public class GuildCreateResponder(
|
|||
await memberCache.RemoveAllMembersAsync(evt.ID);
|
||||
await inviteCache.RemoveAsync(evt.ID);
|
||||
|
||||
// Also clear the webhook cache
|
||||
var guildConfig = await guildRepository.GetAsync(evt.ID);
|
||||
await webhookCache.RemoveWebhooksAsync(guildConfig.Channels.AllChannels);
|
||||
|
||||
if (!wasCached || guild == null)
|
||||
{
|
||||
_logger.Information("Left uncached guild {GuildId}", evt.ID);
|
||||
|
|
|
|||
|
|
@ -83,5 +83,35 @@ public class Guild
|
|||
public ulong MessageUpdate { get; set; }
|
||||
public ulong MessageDelete { get; set; }
|
||||
public ulong MessageDeleteBulk { get; set; }
|
||||
|
||||
private ulong[] _allUnfilteredChannels =>
|
||||
[
|
||||
GuildUpdate,
|
||||
GuildEmojisUpdate,
|
||||
GuildRoleCreate,
|
||||
GuildRoleUpdate,
|
||||
GuildRoleDelete,
|
||||
ChannelCreate,
|
||||
ChannelUpdate,
|
||||
ChannelDelete,
|
||||
GuildMemberAdd,
|
||||
GuildMemberUpdate,
|
||||
GuildKeyRoleUpdate,
|
||||
GuildMemberNickUpdate,
|
||||
GuildMemberAvatarUpdate,
|
||||
GuildMemberTimeout,
|
||||
GuildMemberRemove,
|
||||
GuildMemberKick,
|
||||
GuildBanAdd,
|
||||
GuildBanRemove,
|
||||
InviteCreate,
|
||||
InviteDelete,
|
||||
MessageUpdate,
|
||||
MessageDelete,
|
||||
MessageDeleteBulk,
|
||||
.. Redirects.Values,
|
||||
];
|
||||
|
||||
public ulong[] AllChannels => _allUnfilteredChannels.Where(c => c != 0).ToArray();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue