コード例 #1
0
ファイル: Misc.cs プロジェクト: ConnorW1998/Slab
        public async Task Test([Remainder] string arg = "")
        {
            SocketUser author = Context.Message.Author;

            string[] args = arg.Split(' '); //! Seperate multiple args

            var embed = new EmbedBuilder();

            embed.WithTitle("Lobby Message:");
            embed.WithColor(new Color(0, 255, 0));

            if (args[0].ToLower() == "create" || args[0].ToLower() == "new")
            {
                Lobby createdLobby = new Lobby
                {
                    Owner          = author,
                    PlayerCapacity = 10,
                    Players        = new List <SocketUser>()
                };
                LobbyManager.AddPlayer(createdLobby, author);

                try
                {
                    if (args[1] != null)
                    {
                        LobbyManager.ChangeTitle(args[1], author);
                    }
                }
                catch (IndexOutOfRangeException)
                {
                    LobbyManager.ChangeTitle($"{author.Username}'s lobby", author);
                }

                List <SocketUser> additionalPlayers = null;
                if (Context.Message.MentionedUsers.Count >= 1)
                {
                    additionalPlayers = new List <SocketUser>();
                    foreach (SocketUser su in Context.Message.MentionedUsers)
                    {
                        additionalPlayers.Add(su);
                    }
                }

                try
                {
                    if (args[2] != null)
                    {
                        LobbyManager.SetCapacity(author, Convert.ToInt32(args[2]));
                    }
                    embed.WithDescription($"Created lobby: {createdLobby.GameTitle}");
                    embed.WithFooter($"{createdLobby.CurrentPlayers} / {createdLobby.PlayerCapacity} users", "https://i.imgur.com/9Y0vuCO.png");
                }
                catch
                {
                    LobbyManager.SetCapacity(author, 10);
                    embed.WithDescription($"Created lobby: {createdLobby.GameTitle}");
                    embed.WithFooter($"{createdLobby.CurrentPlayers} / {createdLobby.PlayerCapacity} users", "https://i.imgur.com/9Y0vuCO.png");
                }
            }
            if (args[0].ToLower() == "join")
            {
                if (Context.Message.MentionedUsers.Count >= 1)
                {
                    try
                    {
                        Lobby target = LobbyManager.FindLobby(Context.Message.MentionedUsers.FirstOrDefault <SocketUser>());
                        LobbyManager.AddPlayer(target, author);

                        embed.WithDescription($"{author.Username} joined {target.Owner.Username}'s lobby: {target.GameTitle}");
                        embed.AddInlineField("In-lobby players:", target.Players);
                        embed.WithFooter($"{target.CurrentPlayers} / {target.PlayerCapacity} users", "https://i.imgur.com/9Y0vuCO.png");
                    }
                    catch (NullReferenceException)
                    {
                        await Context.Channel.SendMessageAsync("No lobby exists! Creating new lobby.");

                        List <SocketUser> additionalPlayers = null;

                        if (Context.Message.MentionedUsers.Count >= 1)
                        {
                            additionalPlayers = new List <SocketUser>();
                            foreach (SocketUser su in Context.Message.MentionedUsers)
                            {
                                additionalPlayers.Add(su);
                            }
                        }

                        LobbyManager.AddLobby(author, $"{author.Username}'s lobby", additionalPlayers);
                        Lobby target = LobbyManager.FindLobby(author);

                        embed.WithDescription($"{author.Username} created a lobby.");
                        embed.AddInlineField("In-lobby players:", target.Players);
                        embed.WithFooter($"{target.CurrentPlayers} / {target.PlayerCapacity} users", "https://i.imgur.com/9Y0vuCO.png");
                    }
                }
                else
                {
                    try
                    {
                        Lobby target = LobbyManager.FindLobby(args[1]);
                        LobbyManager.AddPlayer(target, author);

                        embed.WithDescription($"{author.Username} joined {target.Owner.Username}'s lobby: {target.GameTitle}");
                        embed.AddInlineField("In-lobby players:", target.Players);
                        embed.WithFooter($"{target.CurrentPlayers} / {target.PlayerCapacity} users", "https://i.imgur.com/9Y0vuCO.png");
                    }
                    catch (NullReferenceException)
                    {
                        await Context.Channel.SendMessageAsync("No lobby exists! Creating new lobby.");

                        List <SocketUser> additionalPlayers = null;

                        if (Context.Message.MentionedUsers.Count >= 1)
                        {
                            additionalPlayers = new List <SocketUser>();
                            foreach (SocketUser su in Context.Message.MentionedUsers)
                            {
                                additionalPlayers.Add(su);
                            }
                        }

                        LobbyManager.AddLobby(author, args[1], additionalPlayers);
                        Lobby target = LobbyManager.FindLobby(author);

                        embed.WithDescription($"{author.Username} created a lobby.");
                        embed.AddInlineField("In-lobby players:", target.Players);
                        embed.WithFooter($"{target.CurrentPlayers} / {target.PlayerCapacity} users", "https://i.imgur.com/9Y0vuCO.png");
                    }
                }
            }
            if (args[0].ToLower() == "leave" || args[0].ToLower() == "exit")
            {
                try
                {
                    Lobby target = LobbyManager.FindLobby(author);
                    LobbyManager.RemovePlayer(target, author);

                    embed.WithDescription($"{author.Username} left {target.Owner.Username}'s lobby: {target.GameTitle}");
                    embed.AddInlineField("In-lobby players:", target.Players);
                    embed.WithFooter($"{target.CurrentPlayers} / {target.PlayerCapacity} users", "https://i.imgur.com/9Y0vuCO.png");
                }
                catch (NullReferenceException)
                {
                    await Context.Channel.SendMessageAsync("You're not in a lobby!");
                }
            }
            if (args[0].ToLower() == "edit" || args[0].ToLower() == "change")
            {
                Lobby target = LobbyManager.FindLobby(author);
                if (args[1].ToLower() == "cap" || args[1].ToLower() == "capacity")
                {
                    LobbyManager.SetCapacity(author, Convert.ToInt32(args[2]));

                    embed.WithDescription($"{author.Username} changed his lobby's capacity to: {target.PlayerCapacity}");
                    embed.AddInlineField("In-lobby players:", target.Players);
                    embed.WithFooter($"{target.CurrentPlayers} / {target.PlayerCapacity} users", "https://i.imgur.com/9Y0vuCO.png");
                }
                else if (args[1].ToLower() == "name" || args[1].ToLower() == "title")
                {
                    LobbyManager.ChangeTitle(args[2], author);

                    embed.WithDescription($"{author.Username} changed his lobby's title to: {target.GameTitle}");
                    embed.AddInlineField("In-lobby players:", target.Players);
                    embed.WithFooter($"{target.CurrentPlayers} / {target.PlayerCapacity} users", "https://i.imgur.com/9Y0vuCO.png");
                }
            }
            await Context.Channel.SendMessageAsync("", false, embed);
        }