public async Task GetDetailedParticipant(string discordId) { using (Context.Channel.EnterTypingState()) { try { _logger.LogInformation($"Executing get {discordId}"); var participant = await _participantService.GetParticipantOrDefault(Context.Guild.Id.ToString(), discordId); if (participant == null) { await ReplyAsync(embed : _embedBuilderService.BuildSimpleEmbed( "Not Found", "Couldn't find participant with this discord id") ); return; } var athlete = await _stravaService.GetAthlete(participant); foreach (var embed in _embedBuilderService.BuildDetailedAthleteEmbeds(participant, athlete)) { await ReplyAsync(embed : embed); } } catch (Exception e) { _logger.LogError(e, "list failed"); } } }
private async Task <IEnumerable <Embed> > BuildProfileEmbedsForStravaOrDiscordId(string id) { LeaderboardParticipant participant = null; participant = _participantService.GetParticipantOrDefault(Context.Guild.Id.ToString(), id) ?? _participantService.GetParticipantByStravaIdOrDefault(Context.Guild.Id.ToString(), id); if (participant == null) { throw new ArgumentException("Couldn't find participant"); } var(policy, context) = _stravaAuthenticationService.GetUnauthorizedPolicy(participant.StravaId); var athlete = await policy.ExecuteAsync(x => _athleteService.Get(participant.StravaId), context); return(_embedBuilderService.BuildDetailedAthleteEmbeds(participant, athlete)); }