discord.py 0.16.12版本出现AttributeError:无PCMVolumeTransformer属性的解决方法
解决
AttributeError: module 'discord' has no attribute 'PCMVolumeTransformer'问题 你的问题根源很明确:你使用的discord.py 0.16.12版本太老了,PCMVolumeTransformer这个类是在discord.py v1.0及之后的版本才新增的,所以旧版本里自然找不到这个属性。下面给你两种可行的解决思路:
一、升级discord.py到最新稳定版(推荐)
这是最彻底的解决方法,旧版本不仅缺少这个类,还可能存在很多bug和已废弃的API。步骤如下:
- 先卸载旧版本的相关包:
pip uninstall discord.py discord.py[voice] -y - 安装最新的稳定版(包含语音支持):
如果你想指定某个稳定版本(比如v2.3.2),可以用:pip install discord.py[voice]pip install discord.py==2.3.2[voice] - 升级后,你原来的
class vol(discord.PCMVolumeTransformer):代码就可以正常使用了,但要注意:v1.0+的discord.py和0.16版本有一些API变化,比如命令注册、语音连接的写法可能需要微调,建议参考对应版本的官方文档调整你的其他代码。
二、不升级版本,用旧版本的音量调整方式
如果因为某些原因不能升级,0.16.12版本里可以通过音频源的volume参数来控制音量,以最常用的FFmpegPCMAudio为例:
from discord import FFmpegPCMAudio from discord.ext.commands import Bot bot = Bot(command_prefix='!') @bot.command() async def play(ctx): # 连接到用户所在的语音频道 voice_channel = ctx.author.voice.channel voice_client = await voice_channel.connect() # 创建带音量的音频源(volume值0-1,1是最大音量) audio_source = FFmpegPCMAudio("music.mp3", volume=0.5) # 播放音频 voice_client.play(audio_source) bot.run("你的机器人Token")
如果需要动态调整音量,旧版本里没有类似PCMVolumeTransformer的动态调整机制,你可能需要暂停当前播放,重新创建一个调整过音量的音频源再继续播放。
内容的提问来源于stack exchange,提问作者M4R1N
相关产品推荐
相关产品推荐

