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

开发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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:36:07