# Buggy code
async def _build_search_page(ctx: commands.Context, tracks, page_num):
    search_num_pages = math.ceil(len(tracks) / 5)
    search_idx_start = (page_num - 1) * 5
    search_idx_end = search_idx_start + 5
    search_list = ""
    command = ctx.invoked_with
    folder = False
    for i, track in enumerate(
        tracks[search_idx_start:search_idx_end], start=search_idx_start
    ):
        search_track_num = i + 1
        if search_track_num > 5:
            search_track_num = search_track_num % 5
        if search_track_num == 0:
            search_track_num = 5
        try:
            query = audio_dataclasses.Query.process_input(track.uri)
            if query.is_local:
                search_list += "`{0}.` **{1}**\n[{2}]\n".format(
                    search_track_num,
                    track.title,
                    audio_dataclasses.LocalPath(track.uri).to_string_hidden(),
                )
            else:
                search_list += "`{0}.` **[{1}]({2})**\n".format(
                    search_track_num, track.title, track.uri
                )
        except AttributeError:
            # query = Query.process_input(track)
            track = audio_dataclasses.Query.process_input(track)
            if track.is_local and command != "search":
                search_list += "`{}.` **{}**\n".format(
                    search_track_num, track.to_string_user()
                )
                folder = True
            elif command == "search":
                search_list += "`{}.` **{}**\n".format(
                    search_track_num, track.to_string_user()
                )
            else:
                search_list += "`{}.` **{}**\n".format(
                    search_track_num, track.to_string_user()
                )
    if hasattr(tracks[0], "uri"):
        title = _("Tracks Found:")
        footer = _("search results")
    elif folder:
        title = _("Folders Found:")
        footer = _("local folders")
    else:
        title = _("Files Found:")
        footer = _("local tracks")
    embed = discord.Embed(
        colour=await ctx.embed_colour(), title=title, description=search_list
    )
    embed.set_footer(
        text=(_("Page {page_num}/{total_pages}") + " | {num_results} {footer}").format(
            page_num=page_num,
            total_pages=search_num_pages,
            num_results=len(tracks),
            footer=footer,
        )
    )
    return embed


# 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 _build_search_page(ctx: commands.Context, tracks, page_num):
    search_num_pages = math.ceil(len(tracks) / 5)
    search_idx_start = (page_num - 1) * 5
    search_idx_end = search_idx_start + 5
    search_list = ""
    command = ctx.invoked_with
    folder = False
    for i, track in enumerate(
        tracks[search_idx_start:search_idx_end], start=search_idx_start
    ):
        search_track_num = i + 1
        if search_track_num > 5:
            search_track_num = search_track_num % 5
        if search_track_num == 0:
            search_track_num = 5
        try:
            query = audio_dataclasses.Query.process_input(track.uri)
            if query.is_local:
                search_list += "`{0}.` **{1}**\n[{2}]\n".format(
                    search_track_num,
                    track.title,
                    audio_dataclasses.LocalPath(track.uri).to_string_user(),
                )
            else:
                search_list += "`{0}.` **[{1}]({2})**\n".format(
                    search_track_num, track.title, track.uri
                )
        except AttributeError:
            track = audio_dataclasses.Query.process_input(track)
            if track.is_local and command != "search":
                search_list += "`{}.` **{}**\n".format(
                    search_track_num, track.to_string_user()
                )
                if track.is_album:
                    folder = True
            elif command == "search":
                search_list += "`{}.` **{}**\n".format(
                    search_track_num, track.to_string_user()
                )
            else:
                search_list += "`{}.` **{}**\n".format(
                    search_track_num, track.to_string_user()
                )
    if hasattr(tracks[0], "uri") and hasattr(tracks[0], "track_identifier"):
        title = _("Tracks Found:")
        footer = _("search results")
    elif folder:
        title = _("Folders Found:")
        footer = _("local folders")
    else:
        title = _("Files Found:")
        footer = _("local tracks")
    embed = discord.Embed(
        colour=await ctx.embed_colour(), title=title, description=search_list
    )
    embed.set_footer(
        text=(_("Page {page_num}/{total_pages}") + " | {num_results} {footer}").format(
            page_num=page_num,
            total_pages=search_num_pages,
            num_results=len(tracks),
            footer=footer,
        )
    )
    return embed