# Buggy code
async def skip(self, ctx: commands.Context, skip_to_track: int = None):
    """Skip to the next track, or to a given track number."""
    if not self._player_check(ctx):
        return await self._embed_msg(ctx, _("Nothing playing."))
    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 skip the music.")
        )
    if not player.current:
        return await self._embed_msg(ctx, _("Nothing playing."))
    dj_enabled = await self.config.guild(ctx.guild).dj_enabled()
    vote_enabled = await self.config.guild(ctx.guild).vote_enabled()
    is_alone = await self._is_alone(ctx)
    is_requester = await self.is_requester(ctx, ctx.author)
    can_skip = await self._can_instaskip(ctx, ctx.author)
    if dj_enabled and not vote_enabled:
        if not (can_skip or is_requester) and not is_alone:
            return await self._embed_msg(
                ctx, _("You need the DJ role or be the track requester to skip tracks.")
            )
        if (
            is_requester
            and not can_skip
            and isinstance(skip_to_track, int)
            and skip_to_track > 1
        ):
            return await self._embed_msg(ctx, _("You can only skip the current track."))
    if vote_enabled:
        if not can_skip:
            if skip_to_track is not None:
                return await self._embed_msg(
                    ctx,
                    _(
                        "Can't skip to a specific track in vote mode without the DJ role."
                    ),
                )
            if ctx.author.id in self.skip_votes[ctx.message.guild]:
                self.skip_votes[ctx.message.guild].remove(ctx.author.id)
                reply = _("I removed your vote to skip.")
            else:
                self.skip_votes[ctx.message.guild].append(ctx.author.id)
                reply = _("You voted to skip.")

            num_votes = len(self.skip_votes[ctx.message.guild])
            vote_mods = []
            for member in player.channel.members:
                can_skip = await self._can_instaskip(ctx, member)
                if can_skip:
                    vote_mods.append(member)
            num_members = len(player.channel.members) - len(vote_mods)
            vote = int(100 * num_votes / num_members)
            percent = await self.config.guild(ctx.guild).vote_percent()
            if vote >= percent:
                self.skip_votes[ctx.message.guild] = []
                await self._embed_msg(ctx, _("Vote threshold met."))
                return await self._skip_action(ctx)
            else:
                reply += _(
                    " Votes: {num_votes}/{num_members}"
                    " ({cur_percent}% out of {required_percent}% needed)"
                ).format(
                    num_votes=humanize_number(num_votes),
                    num_members=humanize_number(num_members),
                    cur_percent=vote,
                    required_percent=percent,
                )
                return await self._embed_msg(ctx, reply)
        else:
            return await self._skip_action(ctx, skip_to_track)
    else:
        return await self._skip_action(ctx, skip_to_track)


# 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 skip(self, ctx: commands.Context, skip_to_track: int = None):
    """Skip to the next track, or to a given track number."""
    if not self._player_check(ctx):
        return await self._embed_msg(ctx, title=_("Nothing playing."))
    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 Skip Tracks"),
            description=_("You must be in the voice channel to skip the music."),
        )
    if not player.current:
        return await self._embed_msg(ctx, title=_("Nothing playing."))
    dj_enabled = self._dj_status_cache.setdefault(
        ctx.guild.id, await self.config.guild(ctx.guild).dj_enabled()
    )
    vote_enabled = await self.config.guild(ctx.guild).vote_enabled()
    is_alone = await self._is_alone(ctx)
    is_requester = await self.is_requester(ctx, ctx.author)
    can_skip = await self._can_instaskip(ctx, ctx.author)
    if dj_enabled and not vote_enabled:
        if not (can_skip or is_requester) and not is_alone:
            return await self._embed_msg(
                ctx,
                title=_("Unable To Skip Tracks"),
                description=_(
                    "You need the DJ role or be the track requester to skip tracks."
                ),
            )
        if (
            is_requester
            and not can_skip
            and isinstance(skip_to_track, int)
            and skip_to_track > 1
        ):
            return await self._embed_msg(
                ctx,
                title=_("Unable To Skip Tracks"),
                description=_("You can only skip the current track."),
            )

    if vote_enabled:
        if not can_skip:
            if skip_to_track is not None:
                return await self._embed_msg(
                    ctx,
                    title=_("Unable To Skip Tracks"),
                    description=_(
                        "Can't skip to a specific track in vote mode without the DJ role."
                    ),
                )
            if ctx.author.id in self.skip_votes[ctx.message.guild]:
                self.skip_votes[ctx.message.guild].remove(ctx.author.id)
                reply = _("I removed your vote to skip.")
            else:
                self.skip_votes[ctx.message.guild].append(ctx.author.id)
                reply = _("You voted to skip.")

            num_votes = len(self.skip_votes[ctx.message.guild])
            vote_mods = []
            for member in player.channel.members:
                can_skip = await self._can_instaskip(ctx, member)
                if can_skip:
                    vote_mods.append(member)
            num_members = len(player.channel.members) - len(vote_mods)
            vote = int(100 * num_votes / num_members)
            percent = await self.config.guild(ctx.guild).vote_percent()
            if vote >= percent:
                self.skip_votes[ctx.message.guild] = []
                await self._embed_msg(ctx, title=_("Vote threshold met."))
                return await self._skip_action(ctx)
            else:
                reply += _(
                    " Votes: {num_votes}/{num_members}"
                    " ({cur_percent}% out of {required_percent}% needed)"
                ).format(
                    num_votes=humanize_number(num_votes),
                    num_members=humanize_number(num_members),
                    cur_percent=vote,
                    required_percent=percent,
                )
                return await self._embed_msg(ctx, title=reply)
        else:
            return await self._skip_action(ctx, skip_to_track)
    else:
        return await self._skip_action(ctx, skip_to_track)