微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的机器人不播放播放列表中的歌曲

如何解决为什么我的机器人不播放播放列表中的歌曲

我正在用 Python 为 discord 创建一个音乐机器人,但是“revisar_lista”函数有问题,它应该播放添加到播放列表中的歌曲,但它只播放下载的第一首歌曲。 (要将歌曲放入播放列表,我使用“队列”命令)。我希望它播放播放列表中的歌曲。这是我的代码

定义“revisar_lista”

@bot.command(pass_context = True)
async def play(ctx,*,url:str):
    def revisar_lista():
        LR_en_archivo = os.path.isdir("./lista")
        if LR_en_archivo is True:
            DIR = os.path.abspath(os.path.realpath("lista"))
            tamaño = len(os.listdir(DIR))
            c_activa = tamaño - 1
            try:
                c_primera = os.listdir(DIR)[0]
            except:
                print("No hay canciones\n")
                listar.clear()
                return
            localizacion_principal = os.path.dirname(os.path.realpath(__file__))
            c_localizacion = os.path.abspath(os.path.realpath("lista") + "\\" + c_primera)
            if tamaño != 0:
                print("Cancion lista,se reproducira en breve")
                print(f"Canciones en la lista: {c_activa}")
                c_enconTrada = os.path.isfile("cancion.mp3")
                if c_enconTrada:
                    os.remove("cancion.mp3")
                    shutil.move(c_localizacion,localizacion_principal)
                    for file in os.listdir("./"):
                        if file.endswith(".mp3"):
                            os.rename(file,'cancion.mp3')
                    voice.play(discord.FFmpegPCMAudio("cancion.mp3"),after= lambda e:revisar_lista())
                    voice.source = discord.PCMVolumeTransformer(voice.source)
                    voice.source.volume = 0.07
                else:
                    listar.clear()
                    return
        else:
            listar.clear()
            print("no se agrego cancion a la lista")

    canal = ctx.message.author.voice.channel
    if not canal:
        await ctx.send('No estas conectado a un canal de voz')
        return
    voz = get(bot.voice_clients,guild = ctx.guild)
    if voz and voz.is_connected():
        await voz.move_to(canal)
    else:
        voz = await canal.connect()

    c_enconTrada = os.path.isfile("cancion.mp3")
    try:
        if c_enconTrada:
            os.remove("cancion.mp3")
            listar.clear()
            print("Archivo antiguo removido")
    except PermissionError:
        print("se ha intentado un archivo pero este se encuentra reporduciendo")
        embed=discord.Embed(title="",description="Error,Canción aun reproduciendose",color=0xff0000)
        await ctx.send(embed=embed)
        return

    LR_en_archivo = os.path.isdir("./lista")
    try:
        LR_carpeta = "./lista"
        if LR_en_archivo is True:
            print("Removida la carpeta antigua")
            shutil.rmtree(LR_carpeta)
    except:
        print("No hay carpeta antigua")

    embed=discord.Embed(title="",description="Todo listo,tu canción sonara en breve",color=0xff0000)
    await ctx.send(embed=embed)

    voice = get(bot.voice_clients,guild = ctx.guild)

    ydl_op = {
        'format' : 'bestaudio/best','quite' : True,'noplaylist': True,'default_search' : 'auto','postprocessors': [{
            'key' : 'FFmpegExtractAudio','preferredcodec' : 'mp3','preferredquality' : '192',}],}

    with youtube_dl.YoutubedL(ydl_op) as ydl:
        print("Descargando cancion\n")
        ydl.download([url])

    for file in os.listdir("./"):
        if file.endswith(".mp3"):
            name = file
            print(f"Renombrando archivo: {file}\n")
            os.rename(file,"cancion.mp3")
    
    voice.play(discord.FFmpegPCMAudio("cancion.mp3"),after= lambda e:revisar_lista())
    voice.source = discord.PCMVolumeTransformer(voice.source)
    voice.source.volume = 0.07

    nombre = name.rsplit("-",2)
    embed=discord.Embed(title="Reproduciendo",description= nombre[0],color=0xff0000)
    await ctx.send(embed=embed)
    print("Reproduciendo \n")

命令队列

@bot.command(pass_context=True,no_pm=True)
async def queue(ctx,url:str):
    cancion_lista = os.path.isdir("./lista")
    if cancion_lista is False:
        os.mkdir("lista")
    DIR = os.path.abspath(os.path.realpath("lista"))
    lista_num = len(os.listdir(DIR))
    lista_num += 1
    agregar_lista = True
    while agregar_lista:
        if lista_num in listar:
            lista_num=+1
        else:
            agregar_lista = False
            listar[lista_num] = lista_num
    lista_path = os.path.abspath(os.path.realpath("lista") + f"\cancion{lista_num}.%(ext)s")
    
    ydl_op = {
        'format' : 'bestaudio/best','outtmpl':lista_path,'preferredquality' : '192'
        }],}
    with youtube_dl.YoutubedL(ydl_op) as ydl:
        print("Desacargando Cancion")
        ydl.download([url])

    embed=discord.Embed(title="",description="Tu canción fue añadida a la lista de reproducción",color=0xff0000)
    await ctx.send(embed=embed)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。