Асинхронный цикл не закроется
Я выполняю следующий асинхронный цикл, и когда я пытаюсь его закрыть, выдается ошибка RuntimeError: Невозможно закрыть работающий цикл событий. Может кто-нибудь объяснить, как правильно выйти из цикла. Я верю, что это может быть цикл, но я не уверен, что мне просто нужно какое-то руководство по этому вопросу.
async def play(message): # What is playing the song at all times
global playing
global count
global stop
global queue
while not client.is_closed:
while count > 0:
print("PLAY")
print(queue)
msg = queue[0]
print(message)
print(queue)
print(msg)
title = msg.replace(" ", "+")
print(title)
html_content =
urllib.request.urlopen("https://www.youtube.com/results?search_query=" + title)
print("HTML")
search_results = re.findall(r'href=\"\/watch\?v=(.{11})',
html_content.read().decode())
print("SEARCH")
final = ("http://www.youtube.com/watch?v=" + search_results[0])
print("FINAL")
server = message.author.server
print("SERVER")
voice = server.voice_client
print("VOICE")
player = await voice.create_ytdl_player(final)
print("PLAYER")
duration = player.duration
print(duration)
playing = True
player.start()
title = player.title
await client.send_message(message.channel, "Now playing `%s`." % title)
await client.change_presence(game=discord.Game(name=title))
print("START")
print(count)
num = duration
while num > 0:
await asyncio.sleep(1)
num -= 1
print(num)
if num == 0:
playing = False
count = count - 1
print(count)
del queue[0]
print(queue)
print("SONG COMPLETE")
stop = True
return True