Try-catch the timer functionality

This commit is contained in:
Daniel_I_Am 2020-06-08 14:20:42 +02:00
parent 2adc291b7d
commit a06c6d5e91
No known key found for this signature in database
GPG Key ID: 80C428FCC9743E84

View File

@ -28,32 +28,43 @@ namespace ChaosBot.Discord.Services
async void UpdateChannelSloganDescription() async void UpdateChannelSloganDescription()
{ {
SocketGuild guild = _client.GetGuild(Convert.ToUInt64(serverConfig.Key)); try
if (guild == null)
{ {
_logger.Warn($"Guild {Convert.ToUInt64(serverConfig.Key)} not found"); SocketGuild guild = _client.GetGuild(Convert.ToUInt64(serverConfig.Key));
return; 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;
}
if (!guild.GetUser(_client.CurrentUser.Id).GetPermissions(channel).ManageChannel) return;
string description = LodestoneManager
.GetFreeCompanyById(serverConfig.GetValue<string>("Lodestone:FreeCompanyId")).FreeCompany
.Slogan;
await channel.ModifyAsync(x => { x.Topic = description; });
} }
catch (Exception ex)
SocketChannel socketChannel = guild.GetChannel(Convert.ToUInt64(lodestoneChannelSloganDescriptionId));
if (socketChannel == null)
{ {
_logger.Warn($"Channel {Convert.ToUInt64(lodestoneChannelSloganDescriptionId)} not found in server {guild.Name}"); _logger.Error($"TimerHandler.UpdateChannelSloganDescription: Exception [{ex}] thrown, <[{ex.Message}]>.");
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<string>("Lodestone:FreeCompanyId")).FreeCompany.Slogan;;
await channel.ModifyAsync(x =>
{
x.Topic = description;
});
} }
Timer.RunTimer(UpdateChannelSloganDescription, new TimeSpan(TimeSpan.TicksPerMinute * refreshMinutes)); Timer.RunTimer(UpdateChannelSloganDescription, new TimeSpan(TimeSpan.TicksPerMinute * refreshMinutes));