Discord音乐机器人执行play命令触发KeyError: 'source'错误求助
Discord音乐机器人Play命令KeyError: 'source'修复
问题情况
原本正常运行的Discord音乐机器人,最近执行play命令时终端报错discord.ext.commands.errors.CommandInvokeError: Command raised an exception: KeyError: 'source',报错堆栈明确指向music_cog.py的play_music函数中读取'source'键的代码行。
错误根源
查看你的search_yt函数返回值,发现键名存在手误:
return {'sourcffmpege': info['formats'][0]['url'], 'title': info['title']}
这里的键名被错误写成了sourcffmpege,而后续play_music和play_next函数里都是通过'source'这个键来获取音频链接,自然会触发找不到键的KeyError。
修复步骤
只需把search_yt函数里的错误键名修正为'source'即可:
def search_yt(self, item): with YoutubeDL(self.YDL_OPTIONS) as ydl: try: info = ydl.extract_info("ytsearch:%s" % item, download=False)['entries'][0] except Exception: return False return {'source': info['formats'][0]['url'], 'title': info['title']}
额外提示
另外注意,youtube-dl已经停止维护,后续可能会出现更多兼容性问题,建议替换为yt-dlp(使用方式和youtube-dl基本一致,只需修改导入语句为from yt_dlp import YoutubeDL,并安装对应包)。
内容的提问来源于stack exchange,提问作者kris
相关产品推荐
相关产品推荐

