Discord.py+Wavelink音乐Bot报错:'list'对象无'encoded'属性
解决Discord音乐Bot的
AttributeError: 'list' object has no attribute 'encoded'错误 执行Discord音乐Bot的/play cool tunes命令时,控制台抛出如下错误:
AttributeError: 'list' object has no attribute 'encoded'
追踪代码发现问题出在wavelink的player.py中——调用track.encoded()时传入的track是列表类型,而非预期的单个轨道对象。
修复步骤:
- 检查
/play命令的轨道搜索逻辑:确认搜索音乐后,是否正确提取了单个轨道对象。比如wavelink的搜索接口通常返回轨道列表,需取第一个结果(或让用户选择后获取对应轨道),而非直接将整个列表传入播放方法。 - 调整
player.py中的播放调用代码:如果暂时无法修改命令的搜索逻辑,可在调用encoded()前增加类型判断,处理列表情况:
# 原代码 await self.node.play(self, track.encoded()) # 修改后的代码 if isinstance(track, list) and track: track = track[0] await self.node.play(self, track.encoded())
- 验证修复效果:重启Bot后执行
/play cool tunes命令,确认错误消失,音乐正常播放。
内容的提问来源于stack exchange,提问作者FluffyKn1ght
相关产品推荐
相关产品推荐

