Discord.py音乐机器人使用spotdl下载Spotify曲目时-s参数不识别问题问询
问题解决方法
报错根因
你遇到的spotdl: error: unrecognized arguments: -s报错是由于spotdl版本不兼容导致:教程使用的是v3及更早的旧版本spotdl,而你当前pip安装的是v4及以上的新版本,新版本已经移除了-s参数,同时调整了输出路径等参数的命名规则。
解决步骤
- 方案一:适配新版本spotdl(推荐)
修改代码中两处spotdl调用逻辑:- 找到
play函数异常分支中的系统调用语句:
原代码:
替换为:system("spotdl -f " + '"' + c_path + '"' + " -s " + url)system(f'spotdl --output "{c_path}" {url}') - 找到
queue函数异常分支中的系统调用语句:
原代码:
替换为:system(f"spotdl -ff song{q_num} -f " + '"' + q_path + '"' + " -s " + url)system(f'spotdl --output "{q_path}/song{q_num}.%(ext)s" {url}')
- 找到
- 方案二:降级到兼容版本
不想改代码可以直接安装教程对应版本的spotdl,执行命令:pip install spotdl==3.9.6
可选优化
建议将os.system调用替换为subprocess.run,可以捕获执行错误输出,后续排查问题更方便,同时避免特殊字符导致的命令注入风险。
内容的提问来源于stack exchange,提问作者Md Sadman Muhtasim Billah
相关产品推荐
相关产品推荐

