building an audio stream bot command for my custom discord bot but it keep throwing errors on ydl.download([url]) and only fetches a partial download assuming it disconnects from server before finishing download i'm not sure how to fix this error or if its just a syntax thing
import discord
import aiohttp
import random
import youtube_dl
import os
from discord.ext import commands
@bot.command()
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 for current audion to finish or use the 'stop' command")
return
voiceChannel = discord.utils.get(ctx.guild.voice_channels, name='moosic')
voice = discord.utils.get(bot.voice_clients, guild=ctx.guild)
if voice is None or not voice.is_connected():
await voiceChannel.connect()
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}],
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download([url])
for file in os.listdir("./"):
if file.endswith(".mp3"):
os.rename(file, "song.mp3")
voice.play(discord.FFmpegPCMAudio("song.mp3"))