docs: async def play(self, author, text_channel, query, index=None, stop_current=False, shuffle=False):
          """
          The play command
  
          Args:
              author (discord.Member): The member that called the command
              text_channel (discord.Channel): The channel where the command was called
              query (str): The argument that was passed with the command
              index (str): Whether to play next or at the end of the queue
              stop_current (bool): Whether to stop the currently playing song
              shuffle (bool): Whether to shuffle the queue after starting
          """
  
          if self.state == 'off':
              self.state = 'starting'
              self.prev_queue = []
              await self.set_topic("")
              # Init the music player
              await self.msetup(text_channel)
              # Queue the song
              await self.enqueue(query, index, stop_current, shuffle)
              # Connect to voice
              await self.vsetup(author)
  
              # Mark as 'ready' if everything is ok
              self.state = 'ready' if self.mready and self.vready else 'off'
          else:
              # Queue the song
              await self.enqueue(query, index, stop_current, shuffle)
  
          if self.state == 'ready':
              if self.streamer is None:
                  await self.vplay()