# Buggy code
def __init__(self, path, **kwargs):
    self._path = path
    if isinstance(path, (Path, WindowsPath, PosixPath, LocalPath)):
        path = str(path.absolute())
    elif path is not None:
        path = str(path)

    self.cwd = Path.cwd()
    _lt_folder = Path(_localtrack_folder) if _localtrack_folder else self.cwd
    _path = Path(path) if path else self.cwd

    if _lt_folder.parts[-1].lower() == "localtracks" and not kwargs.get("forced"):
        self.localtrack_folder = _lt_folder
    elif kwargs.get("forced"):
        if _path.parts[-1].lower() == "localtracks":
            self.localtrack_folder = _path
        else:
            self.localtrack_folder = _path / "localtracks"
    else:
        self.localtrack_folder = _lt_folder / "localtracks"

    try:
        _path = Path(path)
        _path.relative_to(self.localtrack_folder)
        self.path = _path
    except (ValueError, TypeError):
        for sep in _PATH_SEPS:
            if path and path.startswith(f"localtracks{sep}{sep}"):
                path = path.replace(f"localtracks{sep}{sep}", "", 1)
            elif path and path.startswith(f"localtracks{sep}"):
                path = path.replace(f"localtracks{sep}", "", 1)
        self.path = (
            self.localtrack_folder.joinpath(path) if path else self.localtrack_folder
        )

    try:
        if self.path.is_file():
            parent = self.path.parent
        else:
            parent = self.path
        self.parent = Path(parent)
    except OSError:
        self.parent = None


# Traceback (AttributeError)
Traceback (most recent call last):
File "/home/bot/botenv/lib/python3.8/site-packages/discord/ext/commands/core.py", line 83, in wrapped
ret = await coro(*args, **kwargs)
File "/home/bot/botenv/lib/python3.8/site-packages/redbot/cogs/audio/audio.py", line 4937, in _playlist_list
playlists = await get_all_playlist(scope, self.bot, guild, author, specified_user)
File "/home/bot/botenv/lib/python3.8/site-packages/redbot/cogs/audio/playlists.py", line 475, in get_all_playlist
scope_standard, scope_id = _prepare_config_scope(scope, author, guild)
File "/home/bot/botenv/lib/python3.8/site-packages/redbot/cogs/audio/playlists.py", line 86, in _prepare_config_scope
scope = standardize_scope(scope)
File "/home/bot/botenv/lib/python3.8/site-packages/redbot/cogs/audio/playlists.py", line 62, in standardize_scope
scope = scope.upper()
AttributeError: 'NoneType' object has no attribute 'upper'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/home/bot/botenv/lib/python3.8/site-packages/discord/ext/commands/bot.py", line 892, in invoke
await ctx.command.invoke(ctx)
File "/home/bot/botenv/lib/python3.8/site-packages/redbot/core/commands/commands.py", line 799, in invoke
await super().invoke(ctx)
File "/home/bot/botenv/lib/python3.8/site-packages/discord/ext/commands/core.py", line 1234, in invoke
await ctx.invoked_subcommand.invoke(ctx)
File "/home/bot/botenv/lib/python3.8/site-packages/discord/ext/commands/core.py", line 797, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "/home/bot/botenv/lib/python3.8/site-packages/discord/ext/commands/core.py", line 92, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'NoneType' object has no attribute 'upper'

# Fixed code
def __init__(self, path, localtrack_folder, **kwargs):
    self._localtrack_folder = localtrack_folder
    self._path = path
    if isinstance(path, (Path, WindowsPath, PosixPath, LocalPath)):
        path = str(path.absolute())
    elif path is not None:
        path = str(path)

    self.cwd = Path.cwd()
    _lt_folder = Path(self._localtrack_folder) if self._localtrack_folder else self.cwd
    _path = Path(path) if path else self.cwd
    if _lt_folder.parts[-1].lower() == "localtracks" and not kwargs.get("forced"):
        self.localtrack_folder = _lt_folder
    elif kwargs.get("forced"):
        if _path.parts[-1].lower() == "localtracks":
            self.localtrack_folder = _path
        else:
            self.localtrack_folder = _path / "localtracks"
    else:
        self.localtrack_folder = _lt_folder / "localtracks"

    try:
        _path = Path(path)
        _path.relative_to(self.localtrack_folder)
        self.path = _path
    except (ValueError, TypeError):
        for sep in _PATH_SEPS:
            if path and path.startswith(f"localtracks{sep}{sep}"):
                path = path.replace(f"localtracks{sep}{sep}", "", 1)
            elif path and path.startswith(f"localtracks{sep}"):
                path = path.replace(f"localtracks{sep}", "", 1)
        self.path = (
            self.localtrack_folder.joinpath(path) if path else self.localtrack_folder
        )

    try:
        if self.path.is_file():
            parent = self.path.parent
        else:
            parent = self.path
        self.parent = Path(parent)
    except OSError:
        self.parent = None