diff --git a/ChaosBot/Discord/Services/TimerHandler.cs b/ChaosBot/Discord/Services/TimerHandler.cs index 9cbdc1c..7182a8a 100644 --- a/ChaosBot/Discord/Services/TimerHandler.cs +++ b/ChaosBot/Discord/Services/TimerHandler.cs @@ -28,32 +28,43 @@ namespace ChaosBot.Discord.Services async void UpdateChannelSloganDescription() { - SocketGuild guild = _client.GetGuild(Convert.ToUInt64(serverConfig.Key)); - if (guild == null) + try { - _logger.Warn($"Guild {Convert.ToUInt64(serverConfig.Key)} not found"); - return; - } - - SocketChannel socketChannel = guild.GetChannel(Convert.ToUInt64(lodestoneChannelSloganDescriptionId)); - if (socketChannel == null) - { - _logger.Warn($"Channel {Convert.ToUInt64(lodestoneChannelSloganDescriptionId)} not found in server {guild.Name}"); - return; - } - - ITextChannel channel = socketChannel as ITextChannel; - if (channel == null) - { - _logger.Warn($"Could not cast channel {socketChannel.Id} to ITextChannel"); - return; - }; + SocketGuild guild = _client.GetGuild(Convert.ToUInt64(serverConfig.Key)); + if (guild == null) + { + _logger.Warn($"Guild {Convert.ToUInt64(serverConfig.Key)} not found"); + return; + } + + SocketChannel socketChannel = + guild.GetChannel(Convert.ToUInt64(lodestoneChannelSloganDescriptionId)); + if (socketChannel == null) + { + _logger.Warn( + $"Channel {Convert.ToUInt64(lodestoneChannelSloganDescriptionId)} not found in server {guild.Name}"); + return; + } + + ITextChannel channel = socketChannel as ITextChannel; + if (channel == null) + { + _logger.Warn($"Could not cast channel {socketChannel.Id} to ITextChannel"); + return; + } - string description = LodestoneManager.GetFreeCompanyById(serverConfig.GetValue("Lodestone:FreeCompanyId")).FreeCompany.Slogan;; - await channel.ModifyAsync(x => + if (!guild.GetUser(_client.CurrentUser.Id).GetPermissions(channel).ManageChannel) return; + + string description = LodestoneManager + .GetFreeCompanyById(serverConfig.GetValue("Lodestone:FreeCompanyId")).FreeCompany + .Slogan; + + await channel.ModifyAsync(x => { x.Topic = description; }); + } + catch (Exception ex) { - x.Topic = description; - }); + _logger.Error($"TimerHandler.UpdateChannelSloganDescription: Exception [{ex}] thrown, <[{ex.Message}]>."); + } } Timer.RunTimer(UpdateChannelSloganDescription, new TimeSpan(TimeSpan.TicksPerMinute * refreshMinutes));