discord.py如何在discord语音频道中播放特定的MP3(或特定的youtube视频)?

discord.py如何在discord语音频道中播放特定的MP3(或特定的youtube视频)?,discord,discord.py,Discord,Discord.py,现在请记住,我是初学者,所以我不知道如何解决这个问题,许多教程都是预先重写的。非常感谢您的帮助 确保为此安装PyNaCl并导入nacl和os mp3示例: @bot.command() 异步def播放(ctx): 如果ctx.author.voice.channel: 如果不是ctx.guild.voice_客户端:#如果bot已连接,则会引发错误,这将停止错误 player=wait ctx.author.voice.channel.connect() 其他: player=ctx.guild

现在请记住,我是初学者,所以我不知道如何解决这个问题,许多教程都是预先重写的。非常感谢您的帮助

确保为此安装
PyNaCl
并导入
nacl
os

mp3示例:

@bot.command()
异步def播放(ctx):
如果ctx.author.voice.channel:
如果不是ctx.guild.voice_客户端:#如果bot已连接,则会引发错误,这将停止错误
player=wait ctx.author.voice.channel.connect()
其他:
player=ctx.guild.voice\u客户端
player.play(discord.FFmpegPCMAudio(“your.mp3”)#或“path/to/your.mp3”
其他:
等待ctx.send(“请连接到语音频道”)

ytdl示例:

@bot.command()
异步def播放(ctx,url=None):
如果ctx.author.voice.channel:
如果不是ctx.guild.voice\u客户端:
player=wait ctx.author.voice.channel.connect()
其他:
player=ctx.guild.voice\u客户端
选项={
“后处理器”:[{
“键”:“FFmpegExtractAudio”,仅下载音频
“首选编解码器”:“mp3”#其他可接受类型的“wav”等。
“首选质量”:“192”#192kbps音频
}],
“格式”:“最佳音频/最佳”,
“outtmpl”:“yt_song.mp3”#下载的文件名
}
使用youtube_dl.YoutubeDL(选项)作为dl:
下载([url])
player.play(discord.FFmpegPCMAudio(“yt_song.mp3”))
playing=玩家。你在玩吗
玩时:#非强制性
等待asyncio.sleep(1)
playing=玩家。你在玩吗
os.remove(“yt_song.mp3”)#使用后删除文件
其他:
等待ctx.send(“请连接到语音频道”)

参考文献:


要播放mp3文件,必须确保从链接下载FFMPEG。安装并提取后,将其添加到路径中

添加到路径的说明 控制面板-->系统-->高级-->环境变量-->系统变量-->路径-->然后在刚下载的文件中添加bin文件

一旦你安装了它,你必须在你的代码中创建一个VoiceClient对象。有多种方法可以做到这一点。其中一个(我已经使用过)是使用函数
channel.connect()
加入频道并返回VoiceClient对象。一旦有了join client对象,就可以使用函数
VoiceClient.play()
。参数(已找到)接受音频源。这就是FFMPEG的用武之地。在参数内-->
VoiceClient.play(discord.FFmpegPCMAudio(“myAudioFile.mp3”)

如果此行在查找FFMPEG时遇到问题,您可以像这样插入可执行文件的路径-->
VoiceClient.play(discord.ffmpegpcaudio(executable=“C:/FFMPEG/bin/FFMPEG.exe”,source=“myAudioFile.mp3”))
注意,
可执行文件
字符串和
源代码
字符串将因您的FFMPEG位置和mp3文件位置而异

总的来说,这就是示例代码在
on\u voice\u state\u update
功能中使用时的样子:

@bot.event
语音状态更新时的异步定义(成员、之前、之后):
VC=在.channel.connect()之后等待
play(discord.ffmpegpcaudio(“MyAudioFile.mp3”))

请在问题中举例说明。