Remove log channels if they don't exist

This commit is contained in:
Ske 2020-05-01 16:36:21 +02:00
parent 7e43b75f97
commit e133bd657d

View File

@ -2,6 +2,7 @@ using System.Threading.Tasks;
using DSharpPlus; using DSharpPlus;
using DSharpPlus.Entities; using DSharpPlus.Entities;
using DSharpPlus.Exceptions;
using PluralKit.Core; using PluralKit.Core;
@ -30,8 +31,20 @@ namespace PluralKit.Bot {
if (guildCfg.Value.LogBlacklist.Contains(originalChannel.Id)) return; if (guildCfg.Value.LogBlacklist.Contains(originalChannel.Id)) return;
// Bail if we can't find the channel // Bail if we can't find the channel
var channel = await client.GetChannelAsync(guildCfg.Value.LogChannel.Value); DiscordChannel channel;
if (channel == null || channel.Type != ChannelType.Text) return; try
{
channel = await client.GetChannelAsync(guildCfg.Value.LogChannel.Value);
}
catch (NotFoundException)
{
// If it doesn't exist, remove it from the DB
await RemoveLogChannel(guildCfg.Value);
return;
}
// Bail if it's not a text channel
if (channel.Type != ChannelType.Text) return;
// Bail if we don't have permission to send stuff here // Bail if we don't have permission to send stuff here
var neededPermissions = Permissions.SendMessages | Permissions.EmbedLinks; var neededPermissions = Permissions.SendMessages | Permissions.EmbedLinks;
@ -44,5 +57,11 @@ namespace PluralKit.Bot {
await channel.SendMessageAsync(content: url, embed: embed); await channel.SendMessageAsync(content: url, embed: embed);
} }
private async Task RemoveLogChannel(GuildConfig cfg)
{
cfg.LogChannel = null;
await _data.SaveGuildConfig(cfg);
}
} }
} }