我正在写一个Discord音乐机器人。没有经验。我仅通过youtube _dl和FFmpeg在YouTube上找到了一种方法。在这种情况下,漫游器首先从YT下载.mp3格式的视频,然后才将其广播到语音聊天。如何使漫游器将视频直接中继到语音聊天,而不是下载视频?预先谢谢你。
@client.command()
async def play(ctx, url: str):
song_there = os.path.isfile('song.mp3')
try:
if song_there:
os.remove('song.mp3')
print('[log] Старый файл удалён')
except PermissionError:
print('[log] Не удалось удалить файл')
await ctx.send('Пожалуйста, ожидайте')
voice = get(client.voice_clients, guild=ctx.guild)
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192'
}]
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
print('[log] Загружаю музыку...')
ydl.download([url])
for file in os.listdir('./'):
if file.endswith('.mp3'):
name = file
print('[log] Переименовываю файл: {file}.')
os.rename(file, 'song.mp3')
voice.play(discord.FFmpegPCMAudio('song.mp3'), after=lambda e: print(
f'[log] {name}, музыка закончила своё проигрывание.'))
voice.source = discord.PCMVolumeTransformer(voice.source)
voice.source.volume = 0.07
song_name = name.rsplit('-', 2)
await ctx.send(f'Сейчас проигрывается музыка: {song_name[0]}')