private async Task GetUpdateForGuildAsync(BattlefieldUpdate latestBattlefieldUpdate, DiscordGuild guild) { GuildConfig cfg = await _guildService.GetOrCreateConfigAsync(guild.Id); if (cfg == null || !cfg.BattlefieldUpdatesEnabled) { return; } DiscordChannel channel = guild.GetChannel(cfg.BattlefieldUpdatesChannel); if (channel == null) { _logger.LogError($"Battlefield Updates enabled for {guild.Name} but channel {cfg.BattlefieldUpdatesChannel} is invalid"); return; } DateTime lastUpdateUTC = cfg.LastBattlefieldUpdate ?? DateTime.MinValue; if (lastUpdateUTC >= latestBattlefieldUpdate.UpdateDate) { return; } var builder = new DiscordEmbedBuilder() .WithColor(new DiscordColor(21, 26, 35)) .WithTitle(latestBattlefieldUpdate.Title) .WithUrl(latestBattlefieldUpdate.UpdateUrl) .WithDescription(latestBattlefieldUpdate.Description) .WithImageUrl(latestBattlefieldUpdate.ImgUrl) .WithFooter(latestBattlefieldUpdate.UpdateDate.ToString()); await(channel?.SendMessageAsync(builder.Build())); cfg.LastBattlefieldUpdate = latestBattlefieldUpdate.UpdateDate; await _guildService.UpdateConfigAsync(cfg); }
private async Task GetUpdatesAsync() { BattlefieldUpdate latestBattlefieldVUpdate = await GetLatestBattlefieldUpdateAsync(); foreach (DiscordGuild guild in _discordClient?.Guilds.Values) { await GetUpdateForGuildAsync(latestBattlefieldVUpdate, guild); } }