Example #1
0
        public static async Task TeamMenu(UserAccount user, IUserMessage message, IEmote emote, ContextIds idList)
        {
            Team team = user.GetTeam();

            if (team != null)
            {
                switch (emote.Name.ToLower())
                {
                case "back1":
                    user.RemoveAllReactionMessages(7);
                    user.RemoveAllReactionMessages(1);

                    await message.RemoveAllReactionsAsync();

                    await message.ModifyAsync(m => { m.Embed = MonEmbedBuilder.MainMenu(user); m.Content = ""; });

                    await MessageHandler.MenuEmojis(message);

                    user.ReactionMessages.Add(message.Id, 1);
                    break;

                case "invite":
                    if (team.CanInvite(user))
                    {
                        await message.ModifyAsync(m => { m.Content = "**Please tag the player(s) you wish to invite.**"; });

                        user.ExpectedInput         = 0;
                        user.ExpectedInputLocation = message.Channel.Id;
                    }
                    break;

                case "kick_player":
                    if (team.CanKick(user))
                    {
                        await message.ModifyAsync(m => { m.Content = "**Please tag the player(s) you wish to kick.**"; });

                        user.ExpectedInput         = 1;
                        user.ExpectedInputLocation = message.Channel.Id;
                    }
                    break;

                case "exit":
                    bool leader = false;
                    if (team.Members.IndexOf(user) == 0)
                    {
                        leader = true;
                    }

                    team.KickMember(user);

                    if (team.Members.Count > 0)
                    {
                        if (leader)
                        {
                            await MessageHandler.SendMessage(user.Char.CurrentGuildId, message.Channel.Id, $"{team.Members[0].Mention}, you are now the team leader.");
                        }
                    }
                    else
                    {
                        TownHandler.GetTown(user.Char.CurrentGuildId).Teams.Remove(team);
                    }

                    user.RemoveAllReactionMessages(9);
                    user.RemoveAllReactionMessages(7);

                    await message.RemoveAllReactionsAsync();

                    await message.ModifyAsync(m => { m.Embed = MonEmbedBuilder.TeamMenu(user); m.Content = ""; });

                    await MessageHandler.TeamMenuEmojis(message, user);

                    break;

                case "settings":
                    if (team.CanAccessSettings(user))
                    {
                        user.RemoveAllReactionMessages(7);
                        user.RemoveAllReactionMessages(8);

                        await message.RemoveAllReactionsAsync();

                        await message.ModifyAsync(m => { m.Embed = MonEmbedBuilder.TeamSettingsMenu(user); m.Content = ""; });

                        await MessageHandler.TeamSettingsEmojis(message, user);

                        user.ReactionMessages.Add(message.Id, 8);
                    }
                    break;

                case "disband":
                    if (team.CanDisband(user))
                    {
                        TownHandler.GetTown(user.Char.CurrentGuildId).Teams.Remove(team);

                        user.RemoveAllReactionMessages(9);
                        user.RemoveAllReactionMessages(7);

                        await message.RemoveAllReactionsAsync();

                        await message.ModifyAsync(m => { m.Embed = MonEmbedBuilder.TeamMenu(user); m.Content = ""; });

                        await MessageHandler.TeamMenuEmojis(message, user);
                    }
                    break;

                default:
                    break;
                }
            }
        }