Пример #1
0
        private ChallongeClient(string apiKey, string subdomain, DateTime createdAfterDate)
        {
            var config = new ChallongeConfig(apiKey);

            Caller = new ChallongeHTTPClientAPICaller(config);
            ChallongeTournaments = new ChallongeTournaments(Caller, subdomain);
            ChallongeMatches     = new ChallongeMatches(Caller);

            CreatedAfterDate = createdAfterDate;

            LoaderTimer = new Timer(e => LoadNewestData());
            Database    = new DiscordChallongeDatabase();
        }
Пример #2
0
        private void CreateCommands()
        {
            #region Check In
            //TODO maybe use addCheck and make all the checking there
            string paramHold = "Holdnavn";
            string paramSeat = "Pladsnummer";
            Bot.GetService <CommandService>().CreateCommand("checkin")
            .Description("Meld dig som klar til at spille en turnering")
            .Parameter(paramHold)
            .Parameter(paramSeat)
            .Do(async e =>
            {
                using (var db = new DiscordChallongeDatabase())
                {
                    var tourn = await db.Tournaments.FirstOrDefaultAsync(x => x.ShortName == e.Channel.Name);
                    if (tourn == null)
                    {
                        await e.Channel.SendMessage("Du kan ikke checke ind i denne kanal, da den ikke er relateret til en turnering.");
                    }
                    else if (!tourn.CheckInOpen)
                    {
                        await e.Channel.SendMessage("Du kan ikke checke ind til den turneringen endnu. Vi åbner checkin kort tid før tilmeldingen åbner.");
                    }
                    else if (tourn.Participants.Any(x => x.DisplayName.ToLower() == e.GetArg(paramHold).ToLower() && x.TournamentID == tourn.ID))
                    {
                        int seatNum;
                        if (int.TryParse(e.GetArg(paramSeat), out seatNum) && seatNum > 0 && seatNum < 400)     //TODO check if the seat has been taken - and maybe add website username
                        {
                            var args = new UserCheckedInEventArgs
                            {
                                TournamentID = tourn.ID,
                                SeatNum      = seatNum,
                                TeamName     = e.GetArg(paramHold),
                                User         = e.User
                            };
                            OnUserCheckedIn?.Invoke(this, args);
                            await e.Channel.SendMessage($"Super {e.User.NicknameMention} :ok_hand: Du har nu meldt din ankomst. Jeg skal nok give lyd når I skal spille :wink:");
                        }
                        else
                        {
                            await e.Channel.SendMessage($"{e.GetArg(paramSeat)} er ikke et gyldigt pladsnr.");
                        }
                    }
                    else
                    {
                        await e.Channel.SendMessage($"Holdet '{e.GetArg(paramHold)}' ser ikke ud til at være tilmeldt {tourn.ShortName} turneringen. Tilmeld jer turneringen på http://www.nordicnetparty.dk/index.php?option=com_nnp-challonge og derefter checkin her igen.");
                    }
                }
            });

            #endregion

            #region Info
            Bot.GetService <CommandService>().CreateCommand("info")
            .Description("Grundlæggende information om turneringen")
            .Do(async e =>
            {
                using (var db = new DiscordChallongeDatabase())
                {
                    var tourn = await db.Tournaments.FirstOrDefaultAsync(x => x.ShortName == e.Channel.Name);
                    if (tourn == null)
                    {
                        await e.Channel.SendMessage("Denne kanal er ikke relateret til en turnering.");
                    }
                    else
                    {
                        string message = $"{tourn.Name}.";
                        if (!tourn.CheckInOpen)
                        {
                            message += Environment.NewLine + "Det er ikke muligt at checke ind til denne turnering endnu. Vi åbner checkin kort tid før tilmeldingen åbner.";
                        }
                        message += Environment.NewLine + "Læs regler og se brackets her: " + tourn.FullLink;

                        await e.Channel.SendMessage(message);
                    }
                }
            });
            #endregion
        }