Discord.py в очереди вторая песня ломает все - PullRequest
0 голосов
/ 23 июня 2019

Я установил (простую) систему очередей, в которой песни, добавленные, когда бот уже играет, будут добавлены в очередь и воспроизведены после завершения. Однако, когда я добавляю музыку во время ее воспроизведения, текущая песня просто останавливается .

@commands.command()
async def play(self, ctx, *, url):
    # url
    added = False # so i can avoid code later
    if ctx.voice_client.is_playing() or queue:
        queue.append(url)
        temp = await YTDLSource.from_url(queue[-1], loop=self.bot.loop)
        queueNames.append(f"{temp.title}") # displaying youtube name rather than user's search
        added = True # this is for later
    else:
        try:
            queue.pop(0) # if it's not playing, get rid of old song
            queueNames.pop(0)
        except:
            pass # if there is no old song, do nothing
        queue.append(url)
        temp = await YTDLSource.from_url(queue[-1], loop=self.bot.loop)
        queueNames.append(f"{temp.title}")

    if not added: # if no new songs were added
        async with ctx.typing():
            player = await YTDLSource.from_url(queue[0], loop=self.bot.loop)
            ctx.voice_client.play(player, after=lambda e: print("Player error: %s" % e) if e else None)

        await ctx.send(f"Now playing {player.title}")
    else:
        await ctx.send(f"{temp.title} added to the queue") # simple message

Ошибок не выдается, просто останавливается воспроизведение текущей песни. Скажем, я играл в Smash Mouth, затем пытался стоять в очереди, никогда не бросая тебя, бот прекратил бы играть, и мне пришлось бы сделать *skip, чтобы начать следующую песню, которую я поставил в очередь.

Кроме того, когда песня заканчивается, она не переходит прямо к следующей песне, которую я поставил в очередь.

...