开发Discord音乐机器人遇CommandInvokeError错误求助
问题解决:AttributeError: 'VoiceState' object has no attribute 'play'
错误原因
你代码中的vc是VoiceState对象(代表用户的语音状态,比如是否在频道内、静音状态等),而音频播放方法play()属于VoiceClient对象(机器人连接到语音频道后返回的客户端实例),两者并非同一对象,直接调用vc.play()自然会触发属性不存在的错误。
修正后的代码
vc = ctx.author.voice if vc: # 连接目标语音频道,获取VoiceClient实例 voice_client = await vc.channel.connect() # 使用VoiceClient调用play方法播放音频 voice_client.play(discord.FFmpegPCMAudio(f"{video_info['title']}.mp3"))
额外优化建议
为避免机器人重复连接同一语音频道,可先检查是否已存在活跃的VoiceClient:
vc = ctx.author.voice if vc: if ctx.voice_client is None: voice_client = await vc.channel.connect() else: voice_client = ctx.voice_client voice_client.play(discord.FFmpegPCMAudio(f"{video_info['title']}.mp3"))
内容的提问来源于stack exchange,提问作者o.o
相关产品推荐
相关产品推荐

