Проигрывани музыки в discord боте на python
пытаюсь научить бота проигрывать музыку на сервере, но при попытке проиграть ничего не происходит. Вот мой код
@client.command(pass_context=True)
async def join(ctx):
channel = ctx.author.voice.channel
await channel.connect()
@client.command(pass_context=True)
async def play(ctx, url : str):
song_there = os.path.isfile('song.mp3')
try:
if song_there:
os.remove('song.mp3')
except PermissionError:
await ctx.send('wait bruh')
voice = get(client.voice_client, guild = ctx.guild)
ydl_opts = {
'format': 'bestaudio/best',
'postprocessor': [{
'key': 'FFmpegExtractAudio',
'preferredcodac': 'mp3',
'preferredquality': '192',
}],
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
for file in os.listdir('./'):
if file.endwith('.mp3'):
name = 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]}')
Помогите пожалуйста найти проблему. Всем заранее спасибо за ответы
Ответы (1 шт):
Автор решения: denisnumb
→ Ссылка
Для реализации такой команды нужен FFMPEG - .exe файл, необходимый для запуска звука. Этот экзешник запускается через Discord API.
Скачать его можно здесь. Также можете скачать архив (Загрузка начнется сразу)
В папке должно быть 3 файла: ffmpeg.exe, ffplay.exe, ffprobe.exe.
Запускам с явным указанием исполняемого файла ffmpeg.exe:
FFMPEG_OPTIONS = {'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5', 'options': '-vn'}
voice.play(discord.FFmpegPCMAudio(executable="путь\\к\\файлу\\ffmpeg.exe", source = 'song.mp3', **FFMPEG_OPTIONS))
Полноценный код можете найти здесь