# Buggy code
async def _playlist_queue(
    self, ctx: commands.Context, playlist_name: str, *, scope_data: ScopeParser = None
):
    """Save the queue to a playlist.

    **Usage**:
    ​ ​ ​ ​ [p]playlist queue playlist_name

    **Args**:
    ​ ​ ​ ​ The following are all optional:
    ​ ​ ​ ​ ​ ​ ​ ​ --scope <scope>
    ​ ​ ​ ​ ​ ​ ​ ​ --author [user]
    ​ ​ ​ ​ ​ ​ ​ ​ --guild [guild] **Only the bot owner can use this**

    Scope is one of the following:
    ​ ​ ​ ​ Global
    ​ ​ ​ ​ Guild
    ​ ​ ​ ​ User

    Author can be one of the following:
    ​ ​ ​ ​ User ID
    ​ ​ ​ ​ User Mention
    ​ ​ ​ ​ User Name#123

    Guild can be one of the following:
    ​ ​ ​ ​ Guild ID
    ​ ​ ​ ​ Exact guild name

    Example use:
    ​ ​ ​ ​ [p]playlist queue MyGuildPlaylist
    ​ ​ ​ ​ [p]playlist queue MyGlobalPlaylist --scope Global
    ​ ​ ​ ​ [p]playlist queue MyPersonalPlaylist --scope User
    """
    if scope_data is None:
        scope_data = [PlaylistScope.GUILD.value, ctx.author, ctx.guild, False]
    scope, author, guild, specified_user = scope_data
    scope_name = humanize_scope(
        scope, ctx=guild if scope == PlaylistScope.GUILD.value else author
    )
    temp_playlist = FakePlaylist(author.id, scope)
    if not await self.can_manage_playlist(scope, temp_playlist, ctx, author, guild):
        return
    playlist_name = playlist_name.split(" ")[0].strip('"')[:32]
    if playlist_name.isnumeric():
        return await self._embed_msg(
            ctx,
            _(
                "Playlist names must be a single word "
                "(up to 32 characters) and not numbers only."
            ),
        )
    if not self._player_check(ctx):
        return await self._embed_msg(ctx, _("Nothing playing."))

    player = lavalink.get_player(ctx.guild.id)
    if not player.queue:
        return await self._embed_msg(ctx, _("There's nothing in the queue."))
    tracklist = []
    np_song = track_creator(player, "np")
    tracklist.append(np_song)
    for track in player.queue:
        queue_idx = player.queue.index(track)
        track_obj = track_creator(player, queue_idx)
        tracklist.append(track_obj)

    playlist = await create_playlist(
        ctx, scope, playlist_name, None, tracklist, author, guild
    )
    await self._embed_msg(
        ctx,
        _(
            "Playlist {name} (`{id}`) [**{scope}**] saved "
            "from current queue: {num} tracks added."
        ).format(
            name=playlist.name,
            num=len(playlist.tracks),
            id=playlist.id,
            scope=scope_name,
        ),
    )


# 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 _playlist_queue(
    self, ctx: commands.Context, playlist_name: str, *, scope_data: ScopeParser = None
):
    """Save the queue to a playlist.

    **Usage**:
    ​ ​ ​ ​ [p]playlist queue playlist_name

    **Args**:
    ​ ​ ​ ​ The following are all optional:
    ​ ​ ​ ​ ​ ​ ​ ​ --scope <scope>
    ​ ​ ​ ​ ​ ​ ​ ​ --author [user]
    ​ ​ ​ ​ ​ ​ ​ ​ --guild [guild] **Only the bot owner can use this**

    **Scope** is one of the following:
    ​ ​ ​ ​ Global
    ​ ​ ​ ​ Guild
    ​ ​ ​ ​ User

    **Author** can be one of the following:
    ​ ​ ​ ​ User ID
    ​ ​ ​ ​ User Mention
    ​ ​ ​ ​ User Name#123

    **Guild** can be one of the following:
    ​ ​ ​ ​ Guild ID
    ​ ​ ​ ​ Exact guild name

    Example use:
    ​ ​ ​ ​ [p]playlist queue MyGuildPlaylist
    ​ ​ ​ ​ [p]playlist queue MyGlobalPlaylist --scope Global
    ​ ​ ​ ​ [p]playlist queue MyPersonalPlaylist --scope User
    """
    if scope_data is None:
        scope_data = [PlaylistScope.GUILD.value, ctx.author, ctx.guild, False]
    scope, author, guild, specified_user = scope_data
    scope_name = humanize_scope(
        scope, ctx=guild if scope == PlaylistScope.GUILD.value else author
    )
    temp_playlist = FakePlaylist(author.id, scope)
    if not await self.can_manage_playlist(scope, temp_playlist, ctx, author, guild):
        ctx.command.reset_cooldown(ctx)
        return
    playlist_name = playlist_name.split(" ")[0].strip('"')[:32]
    if playlist_name.isnumeric():
        ctx.command.reset_cooldown(ctx)
        return await self._embed_msg(
            ctx,
            title=_("Invalid Playlist Name"),
            description=_(
                "Playlist names must be a single word "
                "(up to 32 characters) and not numbers only."
            ),
        )
    if not self._player_check(ctx):
        ctx.command.reset_cooldown(ctx)
        return await self._embed_msg(ctx, title=_("Nothing playing."))

    player = lavalink.get_player(ctx.guild.id)
    if not player.queue:
        ctx.command.reset_cooldown(ctx)
        return await self._embed_msg(ctx, title=_("There's nothing in the queue."))
    tracklist = []
    np_song = track_creator(player, "np")
    tracklist.append(np_song)
    for track in player.queue:
        queue_idx = player.queue.index(track)
        track_obj = track_creator(player, queue_idx)
        tracklist.append(track_obj)

    playlist = await create_playlist(
        ctx, scope, playlist_name, None, tracklist, author, guild
    )
    await self._embed_msg(
        ctx,
        title=_("Playlist Created"),
        description=_(
            "Playlist {name} (`{id}`) [**{scope}**] "
            "saved from current queue: {num} tracks added."
        ).format(
            name=playlist.name,
            num=len(playlist.tracks),
            id=playlist.id,
            scope=scope_name,
        ),
    )