如何解决为什么我的机器人不播放播放列表中的歌曲
我正在用 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 举报,一经查实,本站将立刻删除。