コード例 #1
0
        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");
                }
            }
        }
コード例 #2
0
        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));
        }