# Buggy code
async def cog_before_invoke(self, ctx: commands.Context):
    await self._ready_event.wait()
    # check for unsupported arch
    # Check on this needs refactoring at a later date
    # so that we have a better way to handle the tasks
    if self.llsetup in [ctx.command, ctx.command.root_parent]:
        pass

    elif self._connect_task and self._connect_task.cancelled():
        await ctx.send(
            "You have attempted to run Audio's Lavalink server on an unsupported"
            " architecture. Only settings related commands will be available."
        )
        raise RuntimeError(
            "Not running audio command due to invalid machine architecture for Lavalink."
        )

    dj_enabled = await self.config.guild(ctx.guild).dj_enabled()
    if dj_enabled:
        dj_role_obj = ctx.guild.get_role(await self.config.guild(ctx.guild).dj_role())
        if not dj_role_obj:
            await self.config.guild(ctx.guild).dj_enabled.set(None)
            await self.config.guild(ctx.guild).dj_role.set(None)
            await self._embed_msg(ctx, _("No DJ role found. Disabling DJ mode."))


# 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 cog_before_invoke(self, ctx: commands.Context):
    await self._ready_event.wait()
    # check for unsupported arch
    # Check on this needs refactoring at a later date
    # so that we have a better way to handle the tasks
    if self.llsetup in [ctx.command, ctx.command.root_parent]:
        pass

    elif self._connect_task and self._connect_task.cancelled():
        await ctx.send(
            _(
                "You have attempted to run Audio's Lavalink server on an unsupported"
                " architecture. Only settings related commands will be available."
            )
        )
        raise RuntimeError(
            "Not running audio command due to invalid machine architecture for Lavalink."
        )
    dj_enabled = self._dj_status_cache.setdefault(
        ctx.guild.id, await self.config.guild(ctx.guild).dj_enabled()
    )
    if dj_enabled:
        dj_role = self._dj_role_cache.setdefault(
            ctx.guild.id, await self.config.guild(ctx.guild).dj_role()
        )
        dj_role_obj = ctx.guild.get_role(dj_role)
        if not dj_role_obj:
            await self.config.guild(ctx.guild).dj_enabled.set(None)
            self._dj_status_cache[ctx.guild.id] = None
            await self.config.guild(ctx.guild).dj_role.set(None)
            self._dj_role_cache[ctx.guild.id] = None
            await self._embed_msg(ctx, title=_("No DJ role found. Disabling DJ mode."))