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());
                }
            }
        }
Example #2
0
        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);
            }
        }
Example #7
0
        public async Task UpdateStandings()
        {
            var standings = await _retriever.GetLaLigaStandings();

            using (var c = new BarcabotDatabaseConnection())
            {
                c.SetStandings(standings);
            }
        }
Example #8
0
        public async Task UpdateMatches()
        {
            var matches = await _retriever.GetScheduledBarcaMatches();

            using (var c = new BarcabotDatabaseConnection())
            {
                c.SetMatches(matches);
            }
        }
Example #9
0
        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);
                    }
                }
            }
        }
Example #11
0
        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");
                }
            }
        }