示例#1
0
        public async Task <bool> JoinMatch(IMessageSender sender, string[] parameters, SocketMessage arg)
        {
            if (parameters.Length == 0 ||
                parameters.Length != 1 ||
                !int.TryParse(parameters[0], out var matchId))
            {
                return(false);
            }

            var match = this.Matches.FirstOrDefault(m => m.Id == matchId);

            if (match == null)
            {
                return(false);
            }

            if (match.Players.Contains(arg.Author.Username))
            {
                await sender.Reply(arg, $"Already in the match vs {match.Opponent}.");

                return(false);
            }

            match.Players.Add(arg.Author.Username);
            await sender.Reply(arg, $"Added {arg.Author.Username} from the match vs {match.Opponent}. Currently {match.Players.Count} / 5 signed up.");

            await SaveData();

            return(true);
        }
示例#2
0
        public async Task <bool> SetDateForMatch(IMessageSender sender, string[] parameters, SocketMessage arg)
        {
            if (parameters.Length == 0 ||
                parameters.Length != 3 ||
                !int.TryParse(parameters[0], out var matchId) ||
                !DateTime.TryParse(parameters[1], out var date) ||
                !TimeSpan.TryParse(parameters[2], null, out var timeSpan))
            {
                return(false);
            }

            var match = this.Matches.FirstOrDefault(m => m.Id == matchId);

            if (match == null)
            {
                return(false);
            }

            match.Date = date.AddMinutes(timeSpan.TotalMinutes);

            await sender.Reply(arg, $"Match vs {match.Opponent} set to {match.DateString}.");

            await SaveData();

            return(true);
        }
示例#3
0
        public async Task <bool> AddResult(IMessageSender sender, string[] parameters, SocketMessage arg)
        {
            if (parameters.Length == 0 ||
                parameters.Length != 3 ||
                !int.TryParse(parameters[0], out var matchId) ||
                !int.TryParse(parameters[1], out var ourRounds) ||
                !int.TryParse(parameters[2], out var theirRounds))
            {
                return(false);
            }

            var match = this.Matches.FirstOrDefault(m => m.Id == matchId);

            if (match == null)
            {
                return(false);
            }

            match.OurRounds   = ourRounds;
            match.TheirRounds = theirRounds;

            await sender.Reply(arg, "Result set.");

            await SaveData();

            return(true);
        }
示例#4
0
        public async Task <bool> Clear(IMessageSender sender, string[] parameters, SocketMessage arg)
        {
            this.Matches.Clear();

            await sender.Reply(arg, "Cleared all data.");

            await SaveData();

            return(true);
        }
示例#5
0
        public async Task <bool> PrintMatches(IMessageSender sender, string[] parameters, SocketMessage arg)
        {
            if (!this.Matches.Any())
            {
                return(false);
            }

            foreach (var match in this.Matches)
            {
                var emb = new EmbedBuilder {
                    Title = $"vs. {match.Opponent} - {match.DateString}"
                };
                emb.AddField($"result: {match.Result}", $"players: {match.PlayersString}");

                await sender.Reply(arg, emb.Build());
            }

            return(true);
        }