# Buggy code
async def audiostats(self, ctx: commands.Context):
    """Audio stats."""
    server_num = len(lavalink.active_players())
    total_num = len(lavalink.all_players())
    localtracks = await self.config.localpath()

    msg = ""
    for p in lavalink.all_players():
        connect_start = p.fetch("connect")
        connect_dur = dynamic_time(
            int((datetime.datetime.utcnow() - connect_start).total_seconds())
        )
        try:
            query = audio_dataclasses.Query.process_input(p.current.uri)
            if query.is_local:
                if p.current.title == "Unknown title":
                    current_title = localtracks.LocalPath(
                        p.current.uri
                    ).to_string_hidden()
                    msg += "{} [`{}`]: **{}**\n".format(
                        p.channel.guild.name, connect_dur, current_title
                    )
                else:
                    current_title = p.current.title
                    msg += "{} [`{}`]: **{} - {}**\n".format(
                        p.channel.guild.name,
                        connect_dur,
                        p.current.author,
                        current_title,
                    )
            else:
                msg += "{} [`{}`]: **[{}]({})**\n".format(
                    p.channel.guild.name, connect_dur, p.current.title, p.current.uri
                )
        except AttributeError:
            msg += "{} [`{}`]: **{}**\n".format(
                p.channel.guild.name, connect_dur, _("Nothing playing.")
            )

    if total_num == 0:
        return await self._embed_msg(ctx, _("Not connected anywhere."))
    servers_embed = []
    pages = 1
    for page in pagify(msg, delims=["\n"], page_length=1500):
        em = discord.Embed(
            colour=await ctx.embed_colour(),
            title=_("Playing in {num}/{total} servers:").format(
                num=humanize_number(server_num), total=humanize_number(total_num)
            ),
            description=page,
        )
        em.set_footer(
            text="Page {}/{}".format(
                humanize_number(pages), humanize_number((math.ceil(len(msg) / 1500)))
            )
        )
        pages += 1
        servers_embed.append(em)

    await menu(ctx, servers_embed, DEFAULT_CONTROLS)


# 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 audiostats(self, ctx: commands.Context):
    """Audio stats."""
    server_num = len(lavalink.active_players())
    total_num = len(lavalink.all_players())
    localtracks = await self.config.localpath()

    msg = ""
    for p in lavalink.all_players():
        connect_start = p.fetch("connect")
        connect_dur = dynamic_time(
            int((datetime.datetime.utcnow() - connect_start).total_seconds())
        )
        try:
            query = audio_dataclasses.Query.process_input(p.current.uri)
            if query.is_local:
                if p.current.title == "Unknown title":
                    current_title = localtracks.LocalPath(
                        p.current.uri
                    ).to_string_user()
                    msg += "{} [`{}`]: **{}**\n".format(
                        p.channel.guild.name, connect_dur, current_title
                    )
                else:
                    current_title = p.current.title
                    msg += "{} [`{}`]: **{} - {}**\n".format(
                        p.channel.guild.name,
                        connect_dur,
                        p.current.author,
                        current_title,
                    )
            else:
                msg += "{} [`{}`]: **[{}]({})**\n".format(
                    p.channel.guild.name, connect_dur, p.current.title, p.current.uri
                )
        except AttributeError:
            msg += "{} [`{}`]: **{}**\n".format(
                p.channel.guild.name, connect_dur, _("Nothing playing.")
            )

    if total_num == 0:
        return await self._embed_msg(ctx, title=_("Not connected anywhere."))
    servers_embed = []
    pages = 1
    for page in pagify(msg, delims=["\n"], page_length=1500):
        em = discord.Embed(
            colour=await ctx.embed_colour(),
            title=_("Playing in {num}/{total} servers:").format(
                num=humanize_number(server_num), total=humanize_number(total_num)
            ),
            description=page,
        )
        em.set_footer(
            text="Page {}/{}".format(
                humanize_number(pages), humanize_number((math.ceil(len(msg) / 1500)))
            )
        )
        pages += 1
        servers_embed.append(em)

    await menu(ctx, servers_embed, DEFAULT_CONTROLS)