# Buggy code
async def can_manage_playlist(
    self, scope: str, playlist: Playlist, ctx: commands.Context, user, guild
):
    is_owner = await ctx.bot.is_owner(ctx.author)
    has_perms = False
    user_to_query = user
    guild_to_query = guild
    dj_enabled = None
    playlist_author = (
        guild.get_member(playlist.author)
        if guild
        else self.bot.get_user(playlist.author) or user
    )

    is_different_user = len({playlist.author, user_to_query.id, ctx.author.id}) != 1
    is_different_guild = (
        True if guild_to_query is None else ctx.guild.id != guild_to_query.id
    )

    if is_owner:
        has_perms = True
    elif playlist.scope == PlaylistScope.USER.value:
        if not is_different_user:
            has_perms = True
    elif playlist.scope == PlaylistScope.GUILD.value:
        if not is_different_guild:
            dj_enabled = await self.config.guild(ctx.guild).dj_enabled()
            if guild.owner_id == ctx.author.id:
                has_perms = True
            elif dj_enabled and await self._has_dj_role(ctx, ctx.author):
                has_perms = True
            elif await ctx.bot.is_mod(ctx.author):
                has_perms = True
            elif not dj_enabled and not is_different_user:
                has_perms = True

    if has_perms is False:
        if hasattr(playlist, "name"):
            msg = _(
                "You do not have the permissions to manage {name} "
                "(`{id}`) [**{scope}**]."
            ).format(
                user=playlist_author,
                name=playlist.name,
                id=playlist.id,
                scope=humanize_scope(
                    playlist.scope,
                    ctx=guild_to_query
                    if playlist.scope == PlaylistScope.GUILD.value
                    else playlist_author
                    if playlist.scope == PlaylistScope.USER.value
                    else None,
                ),
            )
        elif playlist.scope == PlaylistScope.GUILD.value and (
            is_different_guild or dj_enabled
        ):
            msg = _(
                "You do not have the permissions to manage that playlist in {guild}."
            ).format(guild=guild_to_query)
        elif (
            playlist.scope in [PlaylistScope.GUILD.value, PlaylistScope.USER.value]
            and is_different_user
        ):
            msg = _(
                "You do not have the permissions to manage playlist owned by {user}."
            ).format(user=playlist_author)
        else:
            msg = _(
                "You do not have the permissions to manage "
                "playlists in {scope} scope.".format(
                    scope=humanize_scope(scope, the=True)
                )
            )

        await self._embed_msg(ctx, msg)
        return False
    return True


# Traceback (RuntimeError)
Traceback (most recent call last):
File "/home/martinebots/martinebotsvenv/lib/python3.7/site-packages/discord/ext/commands/core.py", line 79, in wrapped
ret = await coro(*args, **kwargs)
File "/home/martinebots/martinebotscogs/cogs_modified/audio/audio.py", line 3183, in play
await self._enqueue_tracks(ctx, query)
File "/home/martinebots/martinebotscogs/cogs_modified/audio/audio.py", line 3885, in _enqueue_tracks
result, called_api = await self.music_cache.lavalink_query(ctx, player, query)
File "/home/martinebots/martinebotscogs/cogs_modified/audio/apis.py", line 911, in lavalink_query
results = await player.load_tracks(query)
File "/home/martinebots/martinebotsvenv/lib/python3.7/site-packages/lavalink/rest_api.py", line 300, in load_tracks
self.__check_node_ready()
File "/home/martinebots/martinebotsvenv/lib/python3.7/site-packages/lavalink/rest_api.py", line 268, in __check_node_ready
raise RuntimeError("Cannot execute REST request when node not ready.")
RuntimeError: Cannot execute REST request when node not ready.

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

Traceback (most recent call last):
File "/home/martinebots/martinebotsvenv/lib/python3.7/site-packages/discord/ext/commands/bot.py", line 863, in invoke
await ctx.command.invoke(ctx)
File "/home/martinebots/martinebotsvenv/lib/python3.7/site-packages/discord/ext/commands/core.py", line 728, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "/home/martinebots/martinebotsvenv/lib/python3.7/site-packages/discord/ext/commands/core.py", line 88, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: RuntimeError: Cannot execute REST request when node not ready.```

# Fixed code
async def can_manage_playlist(
    self, scope: str, playlist: Playlist, ctx: commands.Context, user, guild
):
    is_owner = await ctx.bot.is_owner(ctx.author)
    has_perms = False
    user_to_query = user
    guild_to_query = guild
    dj_enabled = None
    playlist_author = (
        guild.get_member(playlist.author)
        if guild
        else self.bot.get_user(playlist.author) or user
    )

    is_different_user = len({playlist.author, user_to_query.id, ctx.author.id}) != 1
    is_different_guild = (
        True if guild_to_query is None else ctx.guild.id != guild_to_query.id
    )

    if is_owner:
        has_perms = True
    elif playlist.scope == PlaylistScope.USER.value:
        if not is_different_user:
            has_perms = True
    elif playlist.scope == PlaylistScope.GUILD.value:
        if not is_different_guild:
            dj_enabled = self._dj_status_cache.setdefault(
                ctx.guild.id, await self.config.guild(ctx.guild).dj_enabled()
            )
            if guild.owner_id == ctx.author.id:
                has_perms = True
            elif dj_enabled and await self._has_dj_role(ctx, ctx.author):
                has_perms = True
            elif await ctx.bot.is_mod(ctx.author):
                has_perms = True
            elif not dj_enabled and not is_different_user:
                has_perms = True

    if has_perms is False:
        if hasattr(playlist, "name"):
            msg = _(
                "You do not have the permissions to manage {name} (`{id}`) [**{scope}**]."
            ).format(
                user=playlist_author,
                name=playlist.name,
                id=playlist.id,
                scope=humanize_scope(
                    playlist.scope,
                    ctx=guild_to_query
                    if playlist.scope == PlaylistScope.GUILD.value
                    else playlist_author
                    if playlist.scope == PlaylistScope.USER.value
                    else None,
                ),
            )
        elif playlist.scope == PlaylistScope.GUILD.value and (
            is_different_guild or dj_enabled
        ):
            msg = _(
                "You do not have the permissions to manage that playlist in {guild}."
            ).format(guild=guild_to_query)
        elif (
            playlist.scope in [PlaylistScope.GUILD.value, PlaylistScope.USER.value]
            and is_different_user
        ):
            msg = _(
                "You do not have the permissions to manage playlist owned by {user}."
            ).format(user=playlist_author)
        else:
            msg = _(
                "You do not have the permissions to manage "
                "playlists in {scope} scope.".format(
                    scope=humanize_scope(scope, the=True)
                )
            )

        await self._embed_msg(ctx, title=_("No access to playlist."), description=msg)
        return False
    return True