async def play(self, track_index: int = <NUM_LIT:0>, ignore_shuffle: bool = False):
if self.repeat and self.current:<EOL><INDENT>self.queue.append(self.current)<EOL><DEDENT>self.previous = self.current<EOL>self.current = None<EOL>self.position = <NUM_LIT:0><EOL>self.paused = False<EOL>if not self.queue:<EOL><INDENT>await self.stop()<EOL>await self._lavalink.dispatch_event(QueueEndEvent(self))<EOL><DEDENT>else:<EOL><INDENT>if self.shuffle and not ignore_shuffle:<EOL><INDENT>track = self.queue.pop(randrange(len(self.queue)))<EOL><DEDENT>else:<EOL><INDENT>track = self.queue.pop(min(track_index, len(self.queue) - <NUM_LIT:1>))<EOL><DEDENT>self.current = track<EOL>await self._lavalink.ws.send(op='<STR_LIT>', guildId=self.guild_id, track=track.track)<EOL>await self._lavalink.dispatch_event(TrackStartEvent(self, track))<EOL><DEDENT>
Plays the first track in the queue, if any or plays a track from the specified index in the queue.