如何制作不和谐的机器人循环音频? [discord.py]

How to make a discord bot loop audio? [discord.py]

我想让机器人播放一段音频,当音频结束时,它会重播音频。

我有:

@client.command()
async def play(ctx):
await ctx.channel.purge(limit=1)
channel = ctx.author.voice.channel
if channel:
    print(channel.id)
    await channel.connect()
guild = ctx.guild
audio_source = discord.FFmpegPCMAudio('audio.mp3')
voice_client: discord.VoiceClient = discord.utils.get(client.voice_clients, guild=guild)
if not voice_client.is_playing():
    voice_client.play(audio_source, after=None)

discord.VoiceClient.Play() 有一个 after 参数,在音频流结束时调用。通常,它应该用于显示错误消息,但您可以像这样使用它来重复播放歌曲:

@client.command()
async def play(ctx):
    await ctx.channel.purge(limit=1)
    channel = ctx.author.voice.channel
    voice = get(self.bot.voice_clients, guild=ctx.guild)

    def repeat(guild, voice, audio):
        voice.play(audio, after=lambda e: repeat(guild, voice, audio))
        voice.is_playing()

    if channel and not voice.is_playing():
        audio = discord.FFmpegPCMAudio('audio.mp3')
        voice.play(audio, after=lambda e: repeat(ctx.guild, voice, audio))
        voice.is_playing()