You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord音乐机器人调用FFmpegPCMAudio触发TypeError错误求助

Discord音乐机器人!play命令崩溃修复方案

错误原因

报错TypeError: discord.player.FFmpegPCMAudio() argument after ** must be a mapping, not set的核心问题是:调用FFmpegPCMAudio()时,通过**运算符展开的参数不是字典(映射类型),而是集合(set类型),导致参数解析失败。

修复步骤

  1. 定位问题代码
    打开music_cog.py,找到调用discord.FFmpegPCMAudio()的代码段(通常在处理音频源、准备播放的逻辑里)。错误代码通常类似:
# 错误示例:使用集合而非字典传递参数
ffmpeg_options = {'-vn', '-b:a', '192k'}
audio_source = discord.FFmpegPCMAudio(audio_link, **ffmpeg_options)
  1. 修正参数格式
    将集合格式的参数改为字典,FFmpeg的命令行参数需要通过options键统一传入:
# 正确写法:字典格式传递参数
ffmpeg_options = {
    'options': '-vn -b:a 192k'
}
audio_source = discord.FFmpegPCMAudio(audio_link, **ffmpeg_options)

或者直接省略**,直接传参:

audio_source = discord.FFmpegPCMAudio(audio_link, options='-vn -b:a 192k')
  1. 排查其他潜在问题
  • 检查所有通过**传递给FFmpegPCMAudio()的参数,确保都是字典类型,避免使用集合、列表等非映射结构。
  • 如果使用yt-dlp/youtube-dl获取音频信息,确认返回的参数对象是字典,而非集合。
  1. 验证修复效果
    修改代码后重启机器人,执行!play Rickroll命令,确认机器人发送播放信息后能正常播放,不再崩溃。

内容的提问来源于stack exchange,提问作者NoMex ukrad okap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 09:35:16