# Buggy code
async def _playlist_tracks(
    self,
    ctx: commands.Context,
    player: lavalink.player_manager.Player,
    query: audio_dataclasses.Query,
):
    search = query.is_search
    tracklist = []

    if query.is_spotify:
        try:
            if self.play_lock[ctx.message.guild.id]:
                return await self._embed_msg(
                    ctx, _("Wait until the playlist has finished loading.")
                )
        except KeyError:
            pass
        tracks = await self._get_spotify_tracks(ctx, query)
        if not tracks:
            return await self._embed_msg(ctx, _("Nothing found."))
        for track in tracks:
            track_obj = track_creator(player, other_track=track)
            tracklist.append(track_obj)
        self._play_lock(ctx, False)
    elif query.is_search:
        result, called_api = await self.music_cache.lavalink_query(ctx, player, query)
        tracks = result.tracks
        if not tracks:
            return await self._embed_msg(ctx, _("Nothing found."))
    else:
        result, called_api = await self.music_cache.lavalink_query(ctx, player, query)
        tracks = result.tracks

    if not search and len(tracklist) == 0:
        for track in tracks:
            track_obj = track_creator(player, other_track=track)
            tracklist.append(track_obj)
    elif len(tracklist) == 0:
        track_obj = track_creator(player, other_track=tracks[0])
        tracklist.append(track_obj)
    return tracklist


# 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_tracks(
    self,
    ctx: commands.Context,
    player: lavalink.player_manager.Player,
    query: audio_dataclasses.Query,
):
    search = query.is_search
    tracklist = []

    if query.is_spotify:
        try:
            if self.play_lock[ctx.message.guild.id]:
                return await self._embed_msg(
                    ctx,
                    title=_("Unable To Get Tracks"),
                    description=_("Wait until the playlist has finished loading."),
                )
        except KeyError:
            pass
        tracks = await self._get_spotify_tracks(ctx, query)

        if isinstance(tracks, discord.Message):
            return None

        if not tracks:
            embed = discord.Embed(title=_("Nothing found."))
            if (
                query.is_local
                and query.suffix in audio_dataclasses._PARTIALLY_SUPPORTED_MUSIC_EXT
            ):
                embed = discord.Embed(title=_("Track is not playable."))
                embed.description = _(
                    "**{suffix}** is not a fully supported format and some "
                    "tracks may not play."
                ).format(suffix=query.suffix)
            return await self._embed_msg(ctx, embed=embed)
        for track in tracks:
            track_obj = track_creator(player, other_track=track)
            tracklist.append(track_obj)
        self._play_lock(ctx, False)
    elif query.is_search:
        try:
            result, called_api = await self.music_cache.lavalink_query(
                ctx, player, query
            )
        except TrackEnqueueError:
            self._play_lock(ctx, False)
            return await self._embed_msg(
                ctx,
                title=_("Unable to Get Track"),
                description=_(
                    "I'm unable get a track from Lavalink at the moment, try again in a few "
                    "minutes."
                ),
            )

        tracks = result.tracks
        if not tracks:
            embed = discord.Embed(title=_("Nothing found."))
            if (
                query.is_local
                and query.suffix in audio_dataclasses._PARTIALLY_SUPPORTED_MUSIC_EXT
            ):
                embed = discord.Embed(title=_("Track is not playable."))
                embed.description = _(
                    "**{suffix}** is not a fully supported format and some "
                    "tracks may not play."
                ).format(suffix=query.suffix)
            return await self._embed_msg(ctx, embed=embed)
    else:
        try:
            result, called_api = await self.music_cache.lavalink_query(
                ctx, player, query
            )
        except TrackEnqueueError:
            self._play_lock(ctx, False)
            return await self._embed_msg(
                ctx,
                title=_("Unable to Get Track"),
                description=_(
                    "I'm unable get a track from Lavalink at the moment, try again in a few "
                    "minutes."
                ),
            )

        tracks = result.tracks

    if not search and len(tracklist) == 0:
        for track in tracks:
            track_obj = track_creator(player, other_track=track)
            tracklist.append(track_obj)
    elif len(tracklist) == 0:
        track_obj = track_creator(player, other_track=tracks[0])
        tracklist.append(track_obj)
    return tracklist