docs: async def destroy(self):
          """Destroy the whole gui and music player"""
  
          self.logger.debug("destroy command")
          self.state = 'destroyed'
  
          await self.set_topic("")
          self.nowplayinglog.debug("---")
          self.nowplayingauthorlog.debug("---")
          self.nowplayingsourcelog.debug("---")
          self.timelog.debug(_timebar.make_timebar())
          self.prev_time = "---"
          self.statuslog.debug("Destroying")
  
          self.mready = False
          self.vready = False
          self.pause_time = None
          self.loop_type = 'off'
  
          if self.vclient:
              try:
                  await self.vclient.disconnect()
              except Exception as e:
                  logger.error(e)
                  pass
  
          if self.streamer:
              try:
                  self.streamer.stop()
              except:
                  pass
  
          self.vclient = None
          self.vchannel = None
          self.streamer = None
          self.current_duration = 0
          self.current_download_elapsed = 0
          self.is_live = False
          self.queue = []
          self.prev_queue = []
  
          if self.embed:
              await self.embed.delete()
              self.embed = None
  
          self.clear_cache()