# Buggy code
async def convert(self, ctx: commands.Context, arg: str) -> dict:
    global_scope = await _config.custom(PlaylistScope.GLOBAL.value).all()
    guild_scope = await _config.custom(PlaylistScope.GUILD.value).all()
    user_scope = await _config.custom(PlaylistScope.USER.value).all()
    user_matches = [
        (uid, pid, pdata)
        for uid, data in user_scope.items()
        for pid, pdata in data.items()
        if arg == pid or arg.lower() in pdata.get("name", "").lower()
    ]
    guild_matches = [
        (gid, pid, pdata)
        for gid, data in guild_scope.items()
        for pid, pdata in data.items()
        if arg == pid or arg.lower() in pdata.get("name", "").lower()
    ]
    global_matches = [
        (None, pid, pdata)
        for pid, pdata in global_scope.items()
        if arg == pid or arg.lower() in pdata.get("name", "").lower()
    ]
    if not user_matches and not guild_matches and not global_matches:
        raise commands.BadArgument(_("Could not match '{}' to a playlist.").format(arg))

    return {
        PlaylistScope.GLOBAL.value: global_matches,
        PlaylistScope.GUILD.value: guild_matches,
        PlaylistScope.USER.value: user_matches,
        "arg": arg,
    }


# 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 convert(self, ctx: commands.Context, arg: str) -> MutableMapping:
    global_matches = await get_all_playlist_converter(
        PlaylistScope.GLOBAL.value, _bot, arg, guild=ctx.guild, author=ctx.author
    )
    guild_matches = await get_all_playlist_converter(
        PlaylistScope.GUILD.value, _bot, arg, guild=ctx.guild, author=ctx.author
    )
    user_matches = await get_all_playlist_converter(
        PlaylistScope.USER.value, _bot, arg, guild=ctx.guild, author=ctx.author
    )
    if not user_matches and not guild_matches and not global_matches:
        raise commands.BadArgument(_("Could not match '{}' to a playlist.").format(arg))
    return {
        PlaylistScope.GLOBAL.value: global_matches,
        PlaylistScope.GUILD.value: guild_matches,
        PlaylistScope.USER.value: user_matches,
        "arg": arg,
    }