Асинхронный цикл не закроется

Я выполняю следующий асинхронный цикл, и когда я пытаюсь его закрыть, выдается ошибка 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

0 ответов

Другие вопросы по тегам