Ejemplo n.º 1
0
        public async Task Save()
        {
            MessageHandler messageHandler = new MessageHandler();
            EmbedBuilder   message;

            if (CheckStarted(Context.User.Id.ToString()))
            {
                string savedMessage = "Alright! I've taken a note of your team! You can now simulate matches against other users using it!";
                var    user         = GetUserByIdFromList(Context.User.Id.ToString());

                if (user.CheckTeamReady())
                {
                    if (user.Saved)
                    {
                        savedMessage = "Team is already saved.";
                    }
                    else
                    {
                        user.SaveTeam();
                    }
                }
                else
                {
                    savedMessage = "Hmm, looks like your loadout isn't quite ready yet. You gotta have five people in your team!";
                }

                message = messageHandler.BuildEmbed("Save team", savedMessage, Palette.Pink, GetNamesForSummonersInUserTeam(GetUserByIdFromList(Context.User.Id.ToString())), GetNamesForChampionsInUserTeam(GetUserByIdFromList(Context.User.Id.ToString())));
            }
            else
            {
                message = messageHandler.BuildEmbed(haventStartedMessage[0], haventStartedMessage[1], Palette.Pink);
            }

            await ReplyAsync("", false, message.Build());
        }
Ejemplo n.º 2
0
        public async Task End()
        {
            MessageHandler messageHandler = new MessageHandler();
            EmbedBuilder   message        = messageHandler.BuildEmbed("Team creation and management", $"Finished team creation and editing.", Palette.Pink);

            if (!CheckStarted(Context.User.Id.ToString()))
            {
                message = messageHandler.BuildEmbed("Team creation and management", $"You haven't started.", Palette.Pink);
            }
            else
            {
                userList.RemoveAll(x => x.UserId == Context.User.Id.ToString());
            }

            await ReplyAsync("", false, message.Build());
        }
Ejemplo n.º 3
0
        public async Task Start()
        {
            MessageHandler messageHandler = new MessageHandler();
            EmbedBuilder   message        = messageHandler.BuildEmbed("Team creation and management", $"Started creating and editing team. Write `team end` when done.", Palette.Pink);

            if (CheckStarted(Context.User.Id.ToString()))
            {
                message = messageHandler.BuildEmbed("Team creation and management", $"You've already started.", Palette.Pink);
            }
            else
            {
                User user = new User(Context.User.Id.ToString(), Context.User.Username);
                userList.Add(user);
            }

            await ReplyAsync("", false, message.Build());
        }
Ejemplo n.º 4
0
        public async Task TeamHelpCommandGuild()
        {
            MessageHandler messageHandler = new MessageHandler();

            string       imageUrl    = ImageHandler.GetImageUrl(helpImageName);
            string       description = "PM me the the same command to view help on it.";
            EmbedBuilder message     = messageHandler.BuildEmbed("This command is used in private messages ", $"{description}", Palette.Pink, imageUrl);

            await ReplyAsync("", false, message.Build());
        }
Ejemplo n.º 5
0
        public async Task HelpCommand()
        {
            var champions = StaticRiotApi.GetInstance(Settings.RiotAPIKey).GetChampions(RiotSharp.Misc.Region.euw).Champions;
            var champ     = champions.First(c => c.Key == "Aatrox").Value;

            MessageHandler messageHandler = new MessageHandler();
            EmbedBuilder   message        = messageHandler.BuildEmbed("Team creation and management command", $"Use `help team` to see how to use it.", Palette.Pink);

            await ReplyAsync("", false, message.Build());
        }
Ejemplo n.º 6
0
        public async Task TestCommand()
        {
            //use this to test whatever

            string requestString = @"http://api.champion.gg/champion/ahri/summaaoners/mostWins?api_key=9d30e87ffd52401b8387aa20cf2c701e";

            IRestResponse data = HTTPHandler.GET(requestString);

            MessageHandler messageHandler = new MessageHandler();

            await ReplyAsync("", false, messageHandler.BuildEmbed("testing", $"{data.Content}; {data.StatusCode}; {data.StatusDescription}; {data.ResponseStatus}; {data.IsSuccessful}", Palette.Pink).Build());
        }
Ejemplo n.º 7
0
        public async Task SetColorCommand(string color)
        {
            SocketGuildUser user    = Context.Guild.Users.Where(c => c.Id == Context.User.Id).First();
            MessageHandler  handler = new MessageHandler();

            if (!CheckPermissions.CheckUserInChannel(user, Context.Channel as SocketTextChannel, "changing-room"))
            {
                await ReplyAsync("", false, handler.BuildEmbed("uwu Oopsie whoopsie", $"I'm sowwy :3 but it wooks wike you haw to call thish command fwom <#422886537068412929> owo").Build());

                return;
            }

            if (color == "none")
            {
                await user.RemoveRolesAsync(Context.Guild.Roles.Where(c => ColorRoles.Contains(c.Name)));
                await ReplyAsync("", false, handler.BuildEmbed("Removed color", $"Not so shiny.").Build());

                Debugging.Log("SetColorCommand", $"Removed colors for {user.Username}");
                return;
            }

            color = $"[{color}]";
            if (ColorRoles.Contains(color))
            {
                await user.RemoveRolesAsync(Context.Guild.Roles.Where(c => ColorRoles.Contains(c.Name)));

                await user.AddRoleAsync(Context.Guild.Roles.Where(c => c.Name == color).First());
                await ReplyAsync("", false, handler.BuildEmbed("New color set!", $"Shiny.").Build());

                Debugging.Log("SetColorCommand", $"Set new color for {user.Username}");
                return;
            }
            else
            {
                await ReplyAsync("", false, handler.BuildEmbed("Color doesn't exist", $"Try one of these: `red`, `orange`, `yellow`, `green`, `blue`, `purple` or `none` to reset").Build());

                return;
            }
        }
Ejemplo n.º 8
0
        public async Task TeamHelpCommand()
        {
            MessageHandler messageHandler = new MessageHandler();

            List <string> commandTitles = new List <string>
            {
                "team view", "team save", "team addplayer 'Summoner name/id' 'champ name/id' `role` `region`", "team removeplayer `ask tene about this`"
            };
            List <string> commandDescriptions = new List <string>
            {
                "Displays your current team.", "Saves your team settings.", "Adds a summoner with a champion to your team.", "Removes a summoner and his champ from your team."
            };

            string       imageUrl    = ImageHandler.GetImageUrl(helpImageName);
            string       description = "a description";
            EmbedBuilder message     = messageHandler.BuildEmbed("Team creation and management help ", $"{description}", Palette.Pink, commandTitles, commandDescriptions, imageUrl);

            await ReplyAsync("", false, message.Build());
        }
Ejemplo n.º 9
0
        public async Task HelpCommand()
        {
            MessageHandler messageHandler = new MessageHandler();

            List <string> commandTitles = new List <string>
            {
                "team", "!battle"
            };
            List <string> commandDescriptions = new List <string>
            {
                "Team creation and management command.", "Battling, idk tene write this"
            };

            string imageUrl    = ImageHandler.GetImageUrl(helpImageName);
            string description = "I can create teams of league summoners with selected champions and put two teams against each other.\n" +
                                 "There are commands called from a server I'm in and commands sent directly to my PMs. Team creations are done from PMs, while simulating matches can be done in a server channel.\n" +
                                 "Below are my main commands, call `help command` to get more info on how to use it and see its subcommands.";
            EmbedBuilder message = messageHandler.BuildEmbed("How to use me properly: ", $"{description}", Palette.Pink, commandTitles, commandDescriptions, imageUrl);

            await ReplyAsync("", false, message.Build());
        }
Ejemplo n.º 10
0
        private async Task HandleCommandAsync(SocketMessage arg)
        {
            MessageHandler handler = new MessageHandler();

            var message = arg as SocketUserMessage;

            if (message == null || message.Author.IsBot)
            {
                return;
            }

            int argPos = 0;

            if ((message.HasStringPrefix("!", ref argPos) || message.HasMentionPrefix(Settings._client.CurrentUser, ref argPos)) && !CheckPrivate(message))
            {
                var context = new SocketCommandContext(Settings._client, message);
                Debugging.Log("Command Handler", $"{context.User.Username} called {message}");

                var result = await Settings._commands.ExecuteAsync(context, argPos, Settings._services);

                if (!result.IsSuccess && result.Error != CommandError.ObjectNotFound || result.Error != CommandError.Exception || result.ErrorReason != "The server responded with error 400: BadRequest")
                {
                    Debugging.Log("Command Handler", $"Error with command {message}: {result.ErrorReason.Replace(".", "")}", LogSeverity.Warning);

                    if (result.ErrorReason == "Invalid context for command; accepted contexts: DM")
                    {
                        await arg.Channel.SendMessageAsync("", false, handler.BuildEmbed(":no_entry_sign:  Whoops! Something went wrong!", "Try messaging that command to me instead!").Build());
                    }
                    else
                    {
                        await arg.Channel.SendMessageAsync("", false, handler.BuildEmbed(":no_entry_sign:  Whoops! Something went wrong!", result.ErrorReason).Build());
                    }
                }
            }
            else if (CheckPrivate(message)) //direct message
            {
                bool AddingToDB = false;
                var  context    = new SocketCommandContext(Settings._client, message);
                Debugging.Log("Command Handler, DM", $"{context.User.Username} sent {message}");

                if (!CheckUserInDatabase.Check(context.User.Id.ToString())) // checks if user is in database, if not, add
                {
                    AddingToDB = true;
                    await arg.Channel.SendMessageAsync("", false, handler.BuildEmbed("Hi there!", "Looks like we've never met before. Nice to meet you! I'm going to quickly add you to my database...", ImageHandler.GetImageUrl("ahriwave")).Build());

                    User newUser = new User(context.User.Id.ToString(), context.User.Username);
                    if (newUser.AddToDatabase())
                    {
                        await arg.Channel.SendMessageAsync("", false, handler.BuildEmbed("All done!", "You're ready to go! Use `help` to see what I can do!"));
                    }
                    else
                    {
                        await arg.Channel.SendMessageAsync("", false, handler.BuildEmbed("Hmm... Something went wrong!", "I couldn't add you to my database. Go ahead and try again!"));
                    }
                }

                var result = await Settings._commands.ExecuteAsync(context, argPos, Settings._services);

                if (!result.IsSuccess && result.Error != CommandError.ObjectNotFound || result.Error != CommandError.Exception)
                {
                    if (AddingToDB)
                    {
                        AddingToDB = false;
                    }
                    else
                    {
                        Debugging.Log("Command Handler, DM", $"Error with command {message}: {result.ErrorReason.Replace(".", "")}", LogSeverity.Warning);
                        await arg.Channel.SendMessageAsync("", false, handler.BuildEmbed(":no_entry_sign:  Whoops! Something went wrong!", result.ErrorReason).Build());
                    }
                }
            }
        }
Ejemplo n.º 11
0
        public async Task View()
        {
            MessageHandler messageHandler = new MessageHandler();
            EmbedBuilder   message;
            EmbedBuilder   embed = new EmbedBuilder()
                                   .WithAuthor(a => a.WithIconUrl(Context.User.GetAvatarUrl()).WithName(Context.User.Username + "'s team"))
                                   .WithTitle("Here's your lineup!")
                                   .WithColor(Palette.Pink);

            if (CheckStarted(Context.User.Id.ToString()))
            {
                string savedMessage = "";
                var    user         = GetUserByIdFromList(Context.User.Id.ToString());

                if (user.Saved)
                {
                    savedMessage = "Your team is currently saved! Don't worry!";
                }
                else
                {
                    savedMessage = "Team isn't currently saved! Use `team save` when you're done!";
                }

                var summonersInUserTeam         = GetNamesForSummonersInUserTeam(GetUserByIdFromList(Context.User.Id.ToString()));
                var namesForChampionsInUserTeam = GetNamesForChampionsInUserTeam(GetUserByIdFromList(Context.User.Id.ToString()));

                if (summonersInUserTeam.Count > 1)
                {
                    message = messageHandler.BuildEmbed("Your current team setup: ", savedMessage, Palette.Pink, summonersInUserTeam, namesForChampionsInUserTeam);
                }
                else
                {
                    message = messageHandler.BuildEmbed("Your current team setup: ", savedMessage, Palette.Pink, new List <string> {
                        "It's empty!"
                    }, new List <string> {
                        "See `help` to see how to add"
                    });
                }
            }
            else
            {
                try
                {
                    string userid = Context.User.Id.ToString();

                    User user = new User(userid, Context.User.Username);

                    Team team = new Team(userid);
                    team.GetExistingTeamFromUser();


                    user.SetTeam(team);

                    int counter = 0;
                    foreach (var summoner in team.Summoners)
                    {
                        counter++;
                        string role;
                        string incrementor;
                        switch (summoner.Lane)
                        {
                        case (Lane.Bot): role = "ADC"; break;

                        case (Lane.Jungle): role = "Jungler"; break;

                        case (Lane.Mid): role = "Midlaner"; break;

                        case (Lane.Top): role = "Top"; break;

                        case (Lane.Support): role = "Support"; break;

                        default: return;
                        }
                        switch (counter)
                        {
                        case 1: incrementor = "Alright! First up we've got: "; break;

                        case 2: incrementor = "Secondly, it's: "; break;

                        case 3: incrementor = "Next up!: "; break;

                        case 4: incrementor = "Let's not forget about "; break;

                        case 5: incrementor = "And last, but not least! It's "; break;

                        default: return;
                        }
                        long id = int.Parse(summoner.SummonerId);
                        embed.AddField(incrementor + RiotApi.GetDevelopmentInstance(Settings.RiotAPIKey).GetSummonerBySummonerId(summoner.Region, id).Name + " as SK" + Context.User.Username.ToUpperInvariant() + "'s " + role + "!", "Looks like they'll be playing... " + GetChampionNameById(summoner.ChampionId).Name + "!");
                    }
                }
                catch (Exception e)
                {
                    message = messageHandler.BuildEmbed("Whoops! There's been an error getting your team. Make sure you have one!", $"A message for my creators: {e.Message}", Palette.Pink);
                    Debugging.Log("View command CHECKSTARTED ELSE", $"Error trying to get existing team from user: {e.Message}", LogSeverity.Error);
                }
            }

            await ReplyAsync("", false, embed.Build());
        }
Ejemplo n.º 12
0
        public async Task RemovePlayer()
        {
            MessageHandler messageHandler = new MessageHandler();

            await ReplyAsync("", false, messageHandler.BuildEmbed("Looks like this isn't quite ready yet. Give me a bit more time, no need to rush ;)", "Not yet implemented").Build());
        }
Ejemplo n.º 13
0
        public async Task AddPlayer(string summoner, string champion, string roleInput, string region)
        {
            MessageHandler handler = new MessageHandler();

            if (CheckStarted(Context.User.Id.ToString()))
            {
                if (GetUserByIdFromList(Context.User.Id.ToString()).Team.Summoners.Count == 5)
                {
                    await ReplyAsync("", false, handler.BuildEmbed("Looks like your team is full!", "You can't have more than 5 summoners in your team. To remove one do `removesummoner idk need to talk to tene`"));

                    return;
                }

                bool correctLaneRole = true;
                Lane lane            = new Lane();
                Role role            = new Role();
                switch (roleInput.ToUpper())
                {
                case ("ADC"):
                    lane = Lane.Bot;
                    role = Role.DuoCarry;
                    break;

                case ("JUNGLE"):
                    lane = Lane.Jungle;
                    role = Role.None;
                    break;

                case ("MID"):
                    lane = Lane.Mid;
                    role = Role.Solo;
                    break;

                case ("TOP"):
                    lane = Lane.Top;
                    role = Role.Solo;
                    break;

                case ("SUPPORT"):
                    lane = Lane.Bot;
                    role = Role.DuoSupport;
                    break;

                default:
                    correctLaneRole = false;
                    await ReplyAsync("", false, handler.BuildEmbed("Hmm... Doesn't look like that's a proper role!", "Try one of these instead!: `ADC`  `SUPPORT`  `MID`  `TOP`  `JUNGLE`"));

                    break;
                }

                if (correctLaneRole)
                {
                    champion = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(champion);

                    RiotSharp.Misc.Region parsedRegion;
                    Enum.TryParse(region, out parsedRegion);

                    Summoner newSummoner = new Summoner(RiotAPIClass.api.GetSummonerByName(parsedRegion, summoner).Id.ToString(), GetChampionByName(champion).Id.ToString(), role, lane, parsedRegion);

                    var obj = GetUserByIdFromList(Context.User.Id.ToString());
                    if (obj != null)
                    {
                        obj.AddSummonerToTeam(newSummoner);
                    }

                    await ReplyAsync("", false, handler.BuildEmbed("Added player to your team", "", Palette.Pink).Build());
                }
            }
            else
            {
                await ReplyAsync("", false, handler.BuildEmbed(haventStartedMessage[0], haventStartedMessage[1], Palette.Pink).Build());
            }
        }
Ejemplo n.º 14
0
        private async Task HandleCommandAsync(SocketMessage arg)
        {
            MessageHandler  handler = new MessageHandler();
            RestUserMessage message1;
            var             message = arg as SocketUserMessage;

            if (message == null || message.Author.IsBot)
            {
                return;
            }

            int argPos = 0;

            if (!message.HasStringPrefix("//", ref argPos) && message.Channel.Name == "ticket-station")
            {
                await message.DeleteAsync();
            }
            if ((message.HasStringPrefix("//", ref argPos) || message.HasMentionPrefix(Settings._client.CurrentUser, ref argPos)) && !CheckPrivate(message))
            {
                var context = new SocketCommandContext(Settings._client, message);


                Debugging.Log("Command Handler", $"{context.User.Username} called {message}");

                var result = await Settings._commands.ExecuteAsync(context, argPos, Settings._services);

                if (!result.IsSuccess && result.Error != CommandError.ObjectNotFound || result.Error != CommandError.Exception || result.ErrorReason != "The server responded with error 400: BadRequest")
                {
                    Debugging.Log("Command Handler", $"Error with command {message}: {result.ErrorReason.Replace(".", "")}", LogSeverity.Warning);

                    if (result.ErrorReason == "Invalid context for command; accepted contexts: DM")
                    {
                        await arg.Channel.SendMessageAsync("", false, handler.BuildEmbed(":no_entry_sign:  ERROR!", "Try PMing that command instead.").Build());
                    }
                    else
                    {
                        message1 = await arg.Channel.SendMessageAsync("", false, handler.BuildEmbed(":no_entry_sign:  Error!", result.ErrorReason).Build());

                        await Task.Delay(5000);

                        await message1.DeleteAsync();

                        await message.DeleteAsync();
                    }
                }
            }

            else if (CheckPrivate(message)) //direct message
            {
                bool AddingToDB = false;
                var  context    = new SocketCommandContext(Settings._client, message);
                Debugging.Log("Command Handler, DM", $"{context.User.Username} sent {message}");

                var result = await Settings._commands.ExecuteAsync(context, argPos, Settings._services);

                if (!result.IsSuccess && result.Error != CommandError.ObjectNotFound || result.Error != CommandError.Exception)
                {
                    if (AddingToDB)
                    {
                        AddingToDB = false;
                    }
                    else
                    {
                        Debugging.Log("Command Handler, DM", $"Error with command {message}: {result.ErrorReason.Replace(".", "")}", LogSeverity.Warning);
                        await arg.Channel.SendMessageAsync("", false, handler.BuildEmbed(":no_entry_sign:  Error!", result.ErrorReason).Build());
                    }
                }
            }
        }