# Buggy code
async def volume(self, ctx: commands.Context, vol: int = None):
    """Set the volume, 1% - 150%."""
    dj_enabled = await self.config.guild(ctx.guild).dj_enabled()
    if not vol:
        vol = await self.config.guild(ctx.guild).volume()
        embed = discord.Embed(
            colour=await ctx.embed_colour(),
            title=_("Current Volume:"),
            description=str(vol) + "%",
        )
        if not self._player_check(ctx):
            embed.set_footer(text=_("Nothing playing."))
        return await ctx.send(embed=embed)
    if self._player_check(ctx):
        player = lavalink.get_player(ctx.guild.id)
        if (
            not ctx.author.voice or ctx.author.voice.channel != player.channel
        ) and not await self._can_instaskip(ctx, ctx.author):
            return await self._embed_msg(
                ctx, _("You must be in the voice channel to change the volume.")
            )
    if dj_enabled:
        if not await self._can_instaskip(
            ctx, ctx.author
        ) and not await self._has_dj_role(ctx, ctx.author):
            return await self._embed_msg(
                ctx, _("You need the DJ role to change the volume.")
            )
    if vol < 0:
        vol = 0
    if vol > 150:
        vol = 150
        await self.config.guild(ctx.guild).volume.set(vol)
        if self._player_check(ctx):
            await lavalink.get_player(ctx.guild.id).set_volume(vol)
    else:
        await self.config.guild(ctx.guild).volume.set(vol)
        if self._player_check(ctx):
            await lavalink.get_player(ctx.guild.id).set_volume(vol)
    embed = discord.Embed(
        colour=await ctx.embed_colour(), title=_("Volume:"), description=str(vol) + "%"
    )
    if not self._player_check(ctx):
        embed.set_footer(text=_("Nothing playing."))
    await ctx.send(embed=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 volume(self, ctx: commands.Context, vol: int = None):
    """Set the volume, 1% - 150%."""
    dj_enabled = self._dj_status_cache.setdefault(
        ctx.guild.id, await self.config.guild(ctx.guild).dj_enabled()
    )
    if not vol:
        vol = await self.config.guild(ctx.guild).volume()
        embed = discord.Embed(title=_("Current Volume:"), description=str(vol) + "%")
        if not self._player_check(ctx):
            embed.set_footer(text=_("Nothing playing."))
        return await self._embed_msg(ctx, embed=embed)
    if self._player_check(ctx):
        player = lavalink.get_player(ctx.guild.id)
        if (
            not ctx.author.voice or ctx.author.voice.channel != player.channel
        ) and not await self._can_instaskip(ctx, ctx.author):
            return await self._embed_msg(
                ctx,
                title=_("Unable To Change Volume"),
                description=_("You must be in the voice channel to change the volume."),
            )
    if dj_enabled:
        if not await self._can_instaskip(
            ctx, ctx.author
        ) and not await self._has_dj_role(ctx, ctx.author):
            return await self._embed_msg(
                ctx,
                title=_("Unable To Change Volume"),
                description=_("You need the DJ role to change the volume."),
            )
    if vol < 0:
        vol = 0
    if vol > 150:
        vol = 150
        await self.config.guild(ctx.guild).volume.set(vol)
        if self._player_check(ctx):
            await lavalink.get_player(ctx.guild.id).set_volume(vol)
    else:
        await self.config.guild(ctx.guild).volume.set(vol)
        if self._player_check(ctx):
            await lavalink.get_player(ctx.guild.id).set_volume(vol)
    embed = discord.Embed(title=_("Volume:"), description=str(vol) + "%")
    if not self._player_check(ctx):
        embed.set_footer(text=_("Nothing playing."))
    await self._embed_msg(ctx, embed=embed)