public Embed ToEmbed(Server server, Command command)
        {
            EmbedBuilder embedBuilder = new EmbedBuilder()
                                        .WithThumbnailUrl("https://valkyrja.app/img/valkyrja-geared-517p.png")
                                        .WithColor(196, 255, 255)
                                        .WithTitle($"`{server.Config.CommandPrefix}{command.Id} {this.ArgsList}`")
                                        .WithDescription(command.Description)
                                        .AddField("Arguments", string.IsNullOrEmpty(this.ArgumentDescription) ? "None" : this.ArgumentDescription, false);


            CommandOptions options          = server.GetCommandOptions(command.Id);
            string         permissionString = $"`{options.PermissionOverrides.ToString()}`";

            if (options.PermissionOverrides == PermissionOverrides.Default)
            {
                PermissionOverrides permissions = PermissionOverrides.Default;
                switch (command.RequiredPermissions)
                {
                case PermissionType.ServerOwner:
                    permissions = PermissionOverrides.ServerOwner;
                    break;

                case PermissionType.ServerOwner | PermissionType.Admin:
                    permissions = PermissionOverrides.Admins;
                    break;

                case PermissionType.ServerOwner | PermissionType.Admin | PermissionType.Moderator:
                    permissions = PermissionOverrides.Moderators;
                    break;

                case PermissionType.ServerOwner | PermissionType.Admin | PermissionType.Moderator | PermissionType.SubModerator:
                    permissions = PermissionOverrides.SubModerators;
                    break;

                case PermissionType.ServerOwner | PermissionType.Admin | PermissionType.Moderator | PermissionType.SubModerator | PermissionType.Member:
                    permissions = PermissionOverrides.Members;
                    break;

                default:
                    permissions = PermissionOverrides.Everyone;
                    break;
                }
                permissionString += $" -> `{permissions.ToString()}`";
            }


            string             aliases       = "";
            List <CustomAlias> customAliases = server.CustomAliases.Values.Where(a => a.CommandId == command.Id).ToList();
            int totalAliasCount = command.Aliases?.Count ?? 0 + customAliases.Count;
            int i = 0;

            if (command.Aliases != null && command.Aliases.Any())
            {
                for ( ; i < command.Aliases.Count; i++)
                {
                    aliases += $"{(i == 0 ? "`" : i == totalAliasCount - 1 ? " and `" : ", `")}{server.Config.CommandPrefix}{command.Aliases[i]}`";
                }
            }

            if (customAliases.Any())
            {
                for (int j = command.Aliases?.Count ?? 0; i < totalAliasCount; i++)
                {
                    aliases += $"{(i-j == 0 && string.IsNullOrEmpty(aliases) ? "`" : i-j == totalAliasCount - 1 ? " and `" : ", `")}{server.Config.CommandPrefix}{customAliases[i-j].Alias}`";
                }
            }

            embedBuilder.AddField("Permissions", permissionString, !string.IsNullOrEmpty(aliases));
            if (!string.IsNullOrEmpty(aliases))
            {
                embedBuilder.AddField("Aliases", aliases, true);
            }
            if (command.IsPremiumCommand || command.IsPremiumCommand || command.IsBonusCommand || command.IsBonusAdminCommand)
            {
                string flags = "";
                if (command.IsBonusCommand)
                {
                    flags += "Bonus command.\n";
                }
                if (command.IsBonusAdminCommand)
                {
                    flags += "Bonus command for admins.\n";
                }
                if (command.IsPremiumCommand)
                {
                    flags += "Premium command.\n";
                }
                if (command.IsPremiumServerwideCommand)
                {
                    flags += "Premium server-wide command.";
                }

                embedBuilder.AddField("Special Flags", flags, true);
            }

            IEnumerable <CommandChannelOptions> commandChannelOptions = server.GetCommandChannelOptions(command.Id);
            List <CommandChannelOptions>        blockedChannels       = commandChannelOptions.Where(c => c.ServerId == server.Id && c.CommandId == command.Id && c.Blocked).ToList();
            List <CommandChannelOptions>        allowedChannels       = commandChannelOptions.Where(c => c.ServerId == server.Id && c.CommandId == command.Id && c.Allowed).ToList();

            if (blockedChannels.Any())
            {
                StringBuilder blockedChannelsBuilder = new StringBuilder();
                foreach (CommandChannelOptions channelOptions in blockedChannels)
                {
                    blockedChannelsBuilder.Append($"<#{channelOptions.ChannelId}> ");
                }

                embedBuilder.AddField("Blocked Channels", blockedChannelsBuilder.ToString(), allowedChannels.Any());
            }
            if (allowedChannels.Any())
            {
                StringBuilder allowedChannelsBuilder = new StringBuilder();
                foreach (CommandChannelOptions channelOptions in allowedChannels)
                {
                    if (blockedChannels.Any(c => c.ChannelId == channelOptions.ChannelId))
                    {
                        continue;
                    }
                    allowedChannelsBuilder.Append($"<#{channelOptions.ChannelId}> ");
                }

                embedBuilder.AddField("Allowed Channels", allowedChannelsBuilder.Length == 0 ? " " : allowedChannelsBuilder.ToString(), blockedChannels.Any());
            }


            if (options.DeleteReply && options.DeleteRequest)
            {
                embedBuilder.AddField("Delete Flags", "This command will attempt to delete both, the message that issued the command and Valkyrja's response.", false);
            }
            else if (options.DeleteReply)
            {
                embedBuilder.AddField("Delete Flags", "This command will attempt to delete Valkyrja's response.", false);
            }
            else if (options.DeleteRequest)
            {
                embedBuilder.AddField("Delete Flags", "This command will attempt to delete the message that issued the command.", false);
            }

            return(embedBuilder.Build());
        }
        }                                               //Necessary evul.


        public CommandArguments(IValkyrjaClient client, Command command, Server server, SocketTextChannel channel, SocketMessage message, string commandId, string trimmedMessage, string[] messageArgs, CommandOptions options = null)
        {
            this.Client         = client;
            this.Command        = command;
            this.CommandOptions = options;
            this.Server         = server;
            this.Channel        = channel;
            this.Message        = message;
            this.CommandId      = commandId;
            this.TrimmedMessage = trimmedMessage;
            this.MessageArgs    = messageArgs;
        }