Discord机器人恢复暂停音频报错:VoiceClient.play()缺少source参数
Discord机器人Resume命令报错解决
错误根源
你遇到的TypeError: VoiceClient.play() missing 1 required positional argument: 'source',是因为在resume命令里错误调用了VoiceClient.play()方法——这个方法必须传入音频源参数才能执行,但恢复暂停的音频根本不需要用play(),应该用Discord.py提供的VoiceClient.resume()方法,它专门用来恢复被暂停的播放任务,不需要额外传参。
正确的Pause/Resume命令示例
把你的resume命令代码改成调用resume()而不是play(),参考以下完整示例:
@bot.command() async def pause(ctx): # 检查机器人是否在语音频道且正在播放 if ctx.voice_client and ctx.voice_client.is_playing(): ctx.voice_client.pause() await ctx.send("音频已暂停") else: await ctx.send("当前没有正在播放的音频") @bot.command() async def resume(ctx): # 检查机器人是否在语音频道且处于暂停状态 if ctx.voice_client and ctx.voice_client.is_paused(): ctx.voice_client.resume() # 这里用resume而不是play await ctx.send("音频已恢复播放") else: await ctx.send("当前没有暂停的音频")
额外说明
如果你的需求不是恢复暂停的音频,而是重新播放某个音频文件,那才需要调用VoiceClient.play()并传入对应的音频源(比如discord.FFmpegPCMAudio("audio.mp3")),但恢复暂停的场景直接用resume()就足够了。
内容的提问来源于stack exchange,提问作者Arnos
相关产品推荐
相关产品推荐

