public async Task LaLigaScorers() { using (var c = new BarcabotDatabaseConnection()) { var scorersList = c.GetLaLigaScorersList(); if (!scorersList.Any()) { await Context.Channel.SendMessageAsync(":warning: Come back when LaLiga season starts."); } else { var builder = new EmbedBuilder(); builder.WithTitle("LaLiga Santander Top Scorers"); builder.WithThumbnailUrl("https://files.laliga.es/seccion_logos/laliga-v-600x600_2018.jpg"); builder.WithColor(Color.Gold); foreach (var scorer in scorersList) { builder.AddField($"{scorer.ScorerId + 1}. {scorer.ScorerName}, {scorer.ScorerTeam}", $"Goals: {scorer.ScorerGoals}", false); } await Context.Channel.SendMessageAsync("", false, builder.Build()); } } }
public async Task Player(string name) { using (var c = new BarcabotDatabaseConnection()) { var playerObject = c.GetPlayerByName(name); if (playerObject == null) { await Context.Channel.SendMessageAsync( $":warning: Error: Could not find player `{name}`. Are you sure they exist and are a FCB player?\nIf you think there is a player missing from the database please report it to the creator of BarcaBot `Trace#8994`."); } else { var position = playerObject.Position == "Goalkeeper" ? "goalie" : playerObject.Position.ToLower(); var postResponse = await _postService.GetStreamFromPost($"http://localhost:4000/player_cards/{position}/", playerObject); if (postResponse.ResponseCode != "OK") { await Context.Channel.SendMessageAsync( $":warning: Server Error: Response Code: {postResponse.ResponseCode}"); } else { var stream = postResponse.ResponseContent; stream.Seek(0, SeekOrigin.Begin); await Context.Channel.SendFileAsync(stream, "card.png"); } } } }
public async Task NextMatch() { using (var c = new BarcabotDatabaseConnection()) { var scheduledMatchesList = c.GetScheduledMatchesList(); if (!scheduledMatchesList.Any()) { await Context.Channel.SendMessageAsync(":warning: Season ended. Come back later"); } else { var match = scheduledMatchesList[0]; var builder = new EmbedBuilder(); var date = DateConverter.ConvertToDateTime(match.MatchDate); var dateString = DateConverter.ConvertToString(match.MatchDate); var timeUntil = (date - DateTime.Now); var timeUntilString = $"{timeUntil.Days} days, {timeUntil.Hours} hours, {timeUntil.Minutes} minutes"; builder.WithTitle("Next match"); builder.WithThumbnailUrl("https://upload.wikimedia.org/wikipedia/en/thumb/4/47/FC_Barcelona_%28crest%29.svg/1200px-FC_Barcelona_%28crest%29.svg.png"); builder.WithColor(Color.Purple); builder.AddField($"{match.MatchHomeTeam} - {match.MatchAwayTeam}", $"{match.MatchCompetition} \n {match.MatchStadium}"); builder.AddField("Time", $"Kick-off time: {dateString} UTC\nTime until kick-off: {timeUntilString}"); builder.AddField("Head to Head - Recent games", $"Matches: {match.MatchTotalMatches} \n Wins: {match.MatchWins} \n Draws: {match.MatchDraws} \n Losses: {match.MatchLosses}"); await Context.Channel.SendMessageAsync("", false, builder.Build()); } } }
public async Task Schedule() { using (var c = new BarcabotDatabaseConnection()) { var scheduledMatchesList = c.GetScheduledMatchesList().Take(5).ToList(); if (!scheduledMatchesList.Any()) { await Context.Channel.SendMessageAsync(":warning: Season ended. Come back later"); } else { var builder = new EmbedBuilder(); builder.WithTitle("Schedule"); builder.WithThumbnailUrl("https://upload.wikimedia.org/wikipedia/en/thumb/4/47/FC_Barcelona_%28crest%29.svg/1200px-FC_Barcelona_%28crest%29.svg.png"); builder.WithColor(Color.Purple); foreach (var match in scheduledMatchesList) { var date = DateConverter.ConvertToString(match.MatchDate); builder.AddField($"{match.MatchHomeTeam} - {match.MatchAwayTeam}", $"{match.MatchCompetition}, {date} UTC"); } builder.WithFooter("To see info with more detail about next match do -nextmatch"); await Context.Channel.SendMessageAsync("", false, builder.Build()); } } }
public async Task UclScorers() { using (var c = new BarcabotDatabaseConnection()) { var scorersList = c.GetUclScorersList(); if (!scorersList.Any()) { await Context.Channel.SendMessageAsync(":warning: Come back when UEFA Champions League season starts."); } else { var builder = new EmbedBuilder(); builder.WithTitle("UEFA Champions League Top Scorers"); builder.WithThumbnailUrl("https://i.pinimg.com/originals/4e/e8/e9/4ee8e9139110201b6e17ac878d1250fd.jpg"); builder.WithColor(Color.Gold); foreach (var scorer in scorersList) { builder.AddField($"{scorer.ScorerId + 1}. {scorer.ScorerName}, {scorer.ScorerTeam}", $"Goals: {scorer.ScorerGoals}", false); } await Context.Channel.SendMessageAsync("", false, builder.Build()); } } }
public async Task UpdatePlayers() { var players = await _retriever.Retrieve(); using (var c = new BarcabotDatabaseConnection()) { c.SetPlayers(players); } }
public async Task UpdateStandings() { var standings = await _retriever.GetLaLigaStandings(); using (var c = new BarcabotDatabaseConnection()) { c.SetStandings(standings); } }
public async Task UpdateMatches() { var matches = await _retriever.GetScheduledBarcaMatches(); using (var c = new BarcabotDatabaseConnection()) { c.SetMatches(matches); } }
public async Task UpdateLaLigaScorers() { var scorers = await _retriever.GetScorers(FootballDataUrls.LaLigaId); using (var c = new BarcabotDatabaseConnection()) { c.SetLaLigaScorers(scorers); } }
public async Task Table([Remainder] string mode = "") { using (var c = new BarcabotDatabaseConnection()) { var sqlTable = c.GetLaLigaStandings(); var consoleTable = new ConsoleTable("", "Club", "MP", "W", "D", "L", "GD", "Pts"); var m = mode.ToLower(); if (m.Equals("top")) { var t = sqlTable.Take(5).ToList(); Loop(t); } else if (m.Equals("bottom")) { var t = sqlTable.TakeLast(5); Loop(t); } else { var index = sqlTable.FindIndex(team => team.Team.ToLower().Contains(m)); if (index > 2) { index -= 2; } else { index = 0; } var t = sqlTable.Skip(index).Take(5); Loop(t); } await Context.Channel.SendMessageAsync("LaLiga Santander Table\n" + "```json\n" + consoleTable.ToMinimalString() + "\nTable is updated every 60 seconds." + "```"); void Loop(IEnumerable <StandingsTeam> collection) { foreach (var team in collection) { consoleTable.AddRow(team.Position, team.Team, team.Played, team.Won, team.Drawn, team.Lost, team.Gd, team.Points); } } } }
public async Task PlayerChart(string name) { using (var c = new BarcabotDatabaseConnection()) { var playerObject = c.GetPlayerByName(name); if (playerObject == null) { await Context.Channel.SendMessageAsync( $":warning: Error: Could not find player `{name}`. Are you sure they exist and are a FCB player?\nIf you think there is a player missing from the database please report it to the creator of BarcaBot `Trace#8994`."); } else { var convertedName = NameConverter.ConvertName(playerObject.Name); var stats = playerObject.Per90Stats; var x = new ArrayList { "Shots", "Shots on Target", "Key Passes", "Tackles", "Blocks", "Interceptions", "Duels Won", "Dribbles Attempted", "Dribbles Won", "Fouls Drawn", "Fouls Committed" }; var y = new ArrayList { stats.Shots.Total, stats.Shots.OnTarget, stats.Passes.KeyPasses, stats.Tackles.TotalTackles, stats.Tackles.Blocks, stats.Tackles.Interceptions, stats.Duels.Won, stats.Dribbles.Attempted, stats.Dribbles.Won, stats.Fouls.Drawn, stats.Fouls.Committed }; var chart = new PlotlyChart { Figure = new Figure { Data = new ArrayList { new BarTrace { X = x, Y = y, Name = convertedName } }, Layout = GetLayout($"{convertedName} Per 90 Stats", false) }, Height = 500, Width = 1000 }; var chartAsBytes = await _plotlyClient.GetChartAsByteArray(chart); var stream = new MemoryStream(chartAsBytes); await Context.Channel.SendFileAsync(stream, "chart.png"); } } }