0

私がしたいこと?

  • 名前で音楽を検索する
  • ダウンロードして再生する代わりに音楽をストリーミングする
  • 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 プロジェクトの作成を始めたばかりなので、ドキュメントを読んで理解する経験があまりありません。

4

1 に答える 1