private static void CheckMatches(Action <string, bool> log) { var newMatchesFound = 0; var start = DateTime.Now; try { var ids = ServiceManager.LastMatchService.GetTrackedIds(); foreach (var id in ids) { var player = ServiceManager.PlayerService.GetPlayer(id); var lastMatch = ServiceManager.LastMatchService.GetLastMatch(id); foreach (var match in player.LastMatches) { if (match.Id > lastMatch) { newMatchesFound++; log.Invoke($"Discovered new match for player {player.Name}.", false); log.Invoke(Helper.FormatPlayer(player.Name, match), false); WebhookService.PostMessage(Helper.FormatPlayer(player.Name, match), log); ServiceManager.LastMatchService.SetLastMatch(id, match.Id); ServiceManager.LastMatchService.SetName(id, player.Name); } } } } catch (Exception e) { newMatchesFound = -1; try { WebhookService.PostMessage($"{e.GetType().FullName}: {e.Message}", log, true); WebhookService.PostMessage($"```{e.StackTrace}```", log, true); } catch (Exception ex) { log.Invoke($"Problem posting error message to discord: {e.GetType().FullName}: {ex.Message}. StackTrace: {ex.StackTrace}", true); } throw; } UpdateJSON(newMatchesFound, start, DateTime.Now); }