Python 我用Replit在discord.py上创建了一个简单的音乐机器人,但它总是给我一个错误
代码Python 我用Replit在discord.py上创建了一个简单的音乐机器人,但它总是给我一个错误,python,python-3.x,discord.py,Python,Python 3.x,Discord.py,代码 voiceChannel=discord.utils.get(ctx.guild.voice\u channels,name='CBT') voice=discord.utils.get(client.voice\u clients,guild=ctx.guild) 等待voiceChannel.connect() ydl_opts={ “格式”:“最佳音频/最佳”, “后处理器”:[{ “键”:“FFmpegExtractAudio”, “首选编解码器”:“mp3”, “首选质量”:“1
voiceChannel=discord.utils.get(ctx.guild.voice\u channels,name='CBT')
voice=discord.utils.get(client.voice\u clients,guild=ctx.guild)
等待voiceChannel.connect()
ydl_opts={
“格式”:“最佳音频/最佳”,
“后处理器”:[{
“键”:“FFmpegExtractAudio”,
“首选编解码器”:“mp3”,
“首选质量”:“192”,
}],
}
使用youtube_dl.YoutubeDL(ydl_选项)作为ydl:
下载([url])
对于os.listdir(“./”)中的文件:
如果文件.endswith(“.mp3”):
重命名(文件“song.mp3”)
我想这给了我一个问题
voice.play(discord.FFmpegPCMAudio('song.mp3'))
错误消息:
AttributeError: 'NoneType' object has no attribute 'play'
该错误仅仅意味着
discord.utils.get()
调用返回None
。Client.voice\u clients
属性是一个对象列表。(实际的语音连接是对象。)ctx.guild
属性(对象)的数据类型与Client.voice\u clients
的项目不同,因此discord.utils.get()
将始终返回None
我认为您必须使用for
循环来迭代每个语音连接,并检查协会是否匹配:
连接=无
对于client.voice_客户端中的vconn:
如果vconn.guild==ctx.guild:
连接=vconn
打破
断言连接不是无