public DBLService(LogService log, BotConfig config, DiscordShardedClient client) { Log = log; Config = config; Client = client; UnauthAPI = new DiscordBotListApi(); if (config.Dbl != null) { AuthAPI = new AuthDiscordBotListApi(client.CurrentUser.Id, Config.Dbl); } Log.LogString("Connected to DBL"); }
private async Task Update() { var botContext = new BotContext(); var last = botContext.Statistics.ToList().LastOrDefault(); if (last != null && last.Date.Date == DateTime.Now.Date && last.Guilds == Guilds && last.Channels == Channels && last.Users == Users) { return; } var stat = botContext.Statistics.FirstOrDefault(s => s.Date.Equals(DateTime.Now)); if (stat == null) { stat = new KuvuStat { Date = DateTime.Now, Guilds = Guilds, Channels = Channels, Users = Users }; Program.Client.DebugLogger.LogMessage(LogLevel.Info, nameof(StatisticManager), $"Saving statistics ({stat.Guilds} guilds, {stat.Channels} channels, {stat.Users})", DateTime.Now); await botContext.Statistics.AddAsync(stat); await botContext.SaveChangesAsync(); if (DiscordBotListApi != null) { try { await DiscordBotListApi.UpdateStats(stat.Guilds); } catch (Exception e) { Program.Client.DebugLogger.LogMessage(LogLevel.Error, nameof(StatisticManager), $"Failed sending stats to top.gg!\n{e}", DateTime.Now); } } } }