私がしたいこと?
- 名前で音楽を検索する
- ダウンロードして再生する代わりに音楽をストリーミングする
- 1 つの曲が既に再生されている場合は、曲をキューに入れる
- 作者への出力「Playing [url]」
私のコード:
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 the current playing music to end or use the 'stop' command")
return
channel = ctx.author.voice.channel
'''voiceChannel = discord.utils.get(ctx.guild.voice_channels, name=channel.name)'''
voice_client = discord.utils.get(client.voice_clients, guild=ctx.guild)
if voice_client == None:
await channel.connect()
voice = discord.utils.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:
ydl.download([url])
for file in os.listdir("./"):
if file.endswith(".mp3"):
os.rename(file, "song.mp3")
voice.play(discord.FFmpegPCMAudio("song.mp3"))
このコードは非常に基本的なものです。yt-dl を使用し、YouTube ビデオの URL を貼り付けた場合にのみ機能します。
曲をダウンロードして再生しますが、ボットが音楽を再生するには時間がかかります
曲をキューに入れることはできません。
ボットを作成するのは初めてで、Python プロジェクトの作成を始めたばかりなので、ドキュメントを読んで理解する経験があまりありません。