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 }
private void DiscordBotOnOnUserCheckedIn(object sender, UserCheckedInEventArgs args) { ChallongeClient.CheckUserIn(args.TournamentID, args.TeamName, args.User.Name, args.User.Mention, args.SeatNum); Console.WriteLine($"{args.TeamName} just checked in from seatnum {args.SeatNum} by Discord User: {args.User.Name}"); }