private async Task AnnounceNewMatches() { foreach (var match in Database.Matches.Where(x => !x.Announced)) { var challongeTournament = await ChallongeTournaments.getTournament(match.Tournament.ShortName); var challongeMatch = await ChallongeMatches.GetMatch(match.Tournament.ChallongeIDWithSubdomain, match.ID); if (!challongeMatch.MatchMarkedAsActive) { continue; } var team1 = await Database.Participants.FindAsync(ParticipantIDCache.Instance.GetParticipantID(challongeMatch.player1_id.Value)); var team2 = await Database.Participants.FindAsync(ParticipantIDCache.Instance.GetParticipantID(challongeMatch.player2_id.Value)); var args = new OnNewMatchStartedArgs { Match = challongeMatch, Tournament = challongeTournament, Team1DiscordName = team1?.DiscordMentionName, Team1SeatNum = team1?.SeatNum, Team2DiscordName = team2?.DiscordMentionName, Team2SeatNum = team2?.SeatNum }; OnNewMatchStarted?.Invoke(this, args); match.Announced = true; } await Database.SaveChangesAsync(); }
private async void OnOnNewMatchStarted(object sender, OnNewMatchStartedArgs args) { IParticipant team1 = await args.Match.player1; IParticipant team2 = await args.Match.player2; var teamNameGenerator = new Func <string, string, int?, string>((t, u, p) => "(" + t + (!string.IsNullOrWhiteSpace(u) ? $" {u}" : "") + (p.HasValue ? $" pladsnr.: {p}" : "") + ")"); string message = $":gun:** {teamNameGenerator(team1.name, args.Team1DiscordName, args.Team1SeatNum)} vs {teamNameGenerator(team2.name, args.Team2DiscordName, args.Team2SeatNum)} **:gun:" + $"{Environment.NewLine}Kampen er klar til at blive spillet!"; if (!string.IsNullOrWhiteSpace(args.Match.Location)) { message += $"{Environment.NewLine}Server: {args.Match.Location}"; } DiscordBot.SendMessage(message, args.Tournament.URL); Console.WriteLine($"Match {team1.name} vs {team2.name} is ready"); }