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

discord.py创建私有VC报错:unexpected keyword argument 'allow_new'

解决创建私有语音频道时的allow_new TypeError问题

看起来你遇到的这个错误是因为discord.py版本过旧,无法兼容Discord API最新的权限字段导致的。让我一步步帮你解决:

问题根源

错误信息里的TypeError: __new__() got an unexpected keyword argument 'allow_new',是因为Discord官方更新了权限系统的相关参数(新增了allow_new这类权限标识),但你当前使用的discord.py版本没有适配这个变化,在解析频道权限覆盖数据时就会抛出这个异常,直接导致后续修改频道位置的代码根本没机会执行。

解决方案

1. 升级discord.py到最新兼容版本

打开终端,执行以下命令升级你的discord库:

pip install --upgrade discord.py

如果你用到了语音相关的额外功能(比如音频播放),可以用这个命令升级完整版本:

pip install --upgrade discord.py[voice]

2. 优化频道位置调整逻辑

升级完成后,你的原有代码应该能正常运行。另外关于把VC移到频道列表底部的逻辑,有个小细节可以优化:刚创建的VC已经被计入ctx.guild.voice_channels列表中了,所以len(ctx.guild.voice_channels)会比实际需要的底部位置大1,建议改成:

await players_vc.edit(position=len(ctx.guild.voice_channels) - 1)

这样能确保VC准确移到列表最底部。

3. 错误捕获的正确写法

如果你想保留try-except来处理异常,同时确保创建成功后能修改位置,可以这样写:

try:
    players_vc = await guild.create_voice_channel(f"Game: {game_id}", overwrites=overwrites)
    # 升级库后这行代码就能正常执行了
    await players_vc.edit(position=len(ctx.guild.voice_channels) - 1)
    print("edited position")
except Exception as e:
    print(f"创建频道时出错: {str(e)}")
    # 这里可以添加错误后的补救逻辑,比如通知管理员等

测试验证

你可以用之前的vc_test命令重新测试,升级库后应该不会再抛出allow_new的错误,并且测试VC会成功移到频道列表底部。

内容的提问来源于stack exchange,提问作者TeaEyes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 13:33:13