public IEnumerable <Embed> BuildDetailedAthleteEmbeds(LeaderboardParticipant participant, DetailedAthlete athlete) { var results = new List <Embed>(); var embedBuilder = new EmbedBuilder() .WithCurrentTimestamp(); if (participant == null) { results.Add(embedBuilder .WithTitle("Participant Not Found") .Build()); return(results); } embedBuilder.WithTitle($"Leaderboard participant's profile"); var embedFieldsAdded = 0; embedBuilder .AddField(efb => efb.WithName("Discord Id") .WithValue(participant.DiscordUserId) .WithIsInline(true)); embedFieldsAdded++; foreach (var propertyInfo in athlete.GetType().GetProperties()) { if (string.IsNullOrEmpty(propertyInfo.Name) || StravaPropertyBlacklist.Contains(propertyInfo.Name)) { continue; } var value = propertyInfo.GetValue(athlete)?.ToString(); if (string.IsNullOrEmpty(value)) { continue; } embedBuilder .AddField(efb => efb.WithName(propertyInfo.Name ?? "N/A") .WithValue(value) .WithIsInline(true)); embedFieldsAdded++; } if (embedFieldsAdded >= 25) { results.Add(embedBuilder.Build()); embedBuilder = new EmbedBuilder().WithCurrentTimestamp() .WithTitle($"Detailed Info - {participant.DiscordUserId} - CONTINUED"); } if (embedBuilder.Fields.Count > 0) { results.Add(embedBuilder.Build()); } return(results); }
public Embed BuildAthleteInfoEmbed(LeaderboardParticipant participant, DetailedAthlete athlete) { var embedBuilder = new EmbedBuilder() .WithCurrentTimestamp() .AddField("Discord User Id", participant.DiscordUserId, true) .AddField("Strava First Name", athlete?.Firstname ?? "Unknown", true) .AddField("Strava Athlete Id", participant.StravaId, true) .AddField("Strava Body Weight", (athlete.Weight ?? 0) == 0 ? "Not Specified" : athlete.Weight.ToString(), true) .AddField("Strava FTP", athlete?.Ftp?.ToString() ?? "Not Specified", true); return(embedBuilder.Build()); }
public static async Task GetAuthenticatedAthleteAsync() { //Получаем токен TokenModel token; token = Token.RenewToken(); Configuration.ApiKey.Add("access_token", token.Access_token); Configuration.ApiKey.Add("refresh_token", token.Refresh_token); Console.WriteLine(token.Access_token); //Подключаемся к БД string connString = "mongodb://192.168.1.200:27017"; MongoClient client = new(connString); IMongoDatabase mongoDatabase = client.GetDatabase("strava"); //Получаем данные и сохраняем в БД var apiInstance = new AthletesApi(); try { // Get Authenticated Athlete DetailedAthlete result = apiInstance.GetLoggedInAthlete(); var collection = mongoDatabase.GetCollection <AuthenticatedAthlete>("user"); AuthenticatedAthlete athlete = new() { Id = (int)result.Id, Resource_state = (int)result.ResourceState, Firstname = result.Firstname, Lastname = result.Lastname, City = result.City, State = result.State, Country = result.Country, Profile = result.Profile, Created_at = (DateTime)result.CreatedAt }; await collection.InsertOneAsync(athlete); Console.WriteLine(result); } catch (Exception e) { Console.WriteLine(e.Message); } }