> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mira.party/llms.txt
> Use this file to discover all available pages before exploring further.

# Music

> Play music in voice channels from YouTube, Spotify, SoundCloud and more.

## Playing something

```javascript theme={null}
!play never gonna give you up
```

Aliases: `p`. Accepts a search term or a direct link — YouTube, Spotify, SoundCloud, and Apple Music.

mira joins your voice channel automatically. If you'd rather it joined first:

```javascript theme={null}
!connect
```

Aliases: `join`.

<CodeGroup>
  ```javascript Pick from search results theme={null}
  !play select never gonna
  ```

  ```javascript Jump the queue theme={null}
  !play bump some song
  ```

  ```javascript Play what you're listening to theme={null}
  !play presence
  ```

  ```javascript Play what someone else is listening to theme={null}
  !play presence @someone
  ```
</CodeGroup>

`play presence` reads your Spotify status and queues it. Aliases: `spotify`, `sp`.

### Queue links without a command

```javascript theme={null}
!play links on
```

Any supported link posted in a channel is queued automatically, with no command. Requires **Manage Server**. Aliases: `link`, `urls`, `url`.

## Playback

| Command                  | Aliases         | Effect                    |
| ------------------------ | --------------- | ------------------------- |
| `pause`                  | —               | Pause                     |
| `resume`                 | —               | Resume                    |
| `skip [amount]`          | `sk`            | Skip one or more tracks   |
| `seek <position>`        | —               | Jump to a position        |
| `fastforward <position>` | `forward`, `ff` | Skip ahead                |
| `rewind <position>`      | `rw`            | Go back                   |
| `volume <volume>`        | `vol`           | Set volume                |
| `repeat <option>`        | `loop`          | `track`, `queue` or `off` |
| `shuffle`                | `mix`           | Shuffle the queue         |
| `disconnect`             | `stop`, `dc`    | Leave the channel         |

Positions accept a timestamp or a duration — `!seek 1:30` and `!fastforward 30s` both work.

## The queue

```javascript theme={null}
!queue
```

Aliases: `q`. Paginated, showing what's playing and what's next.

| Command                  | Aliases             | Effect                      |
| ------------------------ | ------------------- | --------------------------- |
| `queue clear`            | `reset`, `clean`    | Empty the queue             |
| `queue shuffle`          | `mix`               | Shuffle                     |
| `queue dedupe`           | `unique`, `rmdupes` | Remove duplicates           |
| `queue remove <filter>`  | `del`, `rm`         | Remove by position or title |
| `queue move <pos> <new>` | `mv`                | Reorder                     |

`queue remove` accepts either a number or part of a title, so `!queue remove rick` works as well as `!queue remove 3`.

<Tip>
  `queue dedupe` is the fix for a shared queue where four people have all added the same song. Aliases include `remdupes` and `duplicates`.
</Tip>

## Making it staff-only

There's no dedicated DJ role, but [command restrictions](/security/command-access#restricting-commands-to-roles) do the job:

```javascript theme={null}
!command restrict @DJ play
!command restrict @DJ skip
!command restrict @DJ volume
!command restrict @DJ disconnect
```

Or restrict the whole category:

```javascript theme={null}
!module restrict @DJ audio
```

## Common problems

<AccordionGroup>
  <Accordion title="The bot joins but doesn't play">
    It needs **Speak** in the voice channel, not just Connect. Check the channel's overwrites — a channel-level deny beats a role-level allow.
  </Accordion>

  <Accordion title="Audio is choppy">
    Usually the voice region. Try changing it in channel settings. If it's only in one channel, that's a strong hint.
  </Accordion>

  <Accordion title="Spotify links don't play">
    Spotify doesn't allow direct streaming, so tracks are matched to another source and played from there. Very obscure tracks may not match — the track name usually works better than the link.
  </Accordion>

  <Accordion title="It leaves on its own">
    Empty voice channels are left automatically to free up resources. Re-run `!play` and it comes back.
  </Accordion>
</AccordionGroup>

## Related

* [Spotify](/audio/spotify) — control your own Spotify playback rather than a shared queue
* [Voice recap](/audio/recap) — record and transcribe a voice conversation
* [VoiceMaster](/setup/voicemaster) — temporary personal voice channels
* [Media tools](/utility/media) — `makemp3`, `vocals`, `shazam`, `transcript`

## Command reference

| Command                  | Aliases             | Description                      |
| ------------------------ | ------------------- | -------------------------------- |
| `play <query>`           | `p`                 | Queue a track                    |
| `play select <query>`    | `sel`, `s`          | Pick from results                |
| `play bump <query>`      | —                   | Add to the front                 |
| `play presence [member]` | `spotify`, `sp`     | Queue a Spotify status           |
| `play links (on/off)`    | `link`, `urls`      | Auto-queue links (Manage Server) |
| `connect`                | `join`              | Join your channel                |
| `disconnect`             | `stop`, `dc`        | Leave                            |
| `pause` / `resume`       | —                   | Pause and resume                 |
| `skip [amount]`          | `sk`                | Skip tracks                      |
| `seek <position>`        | —                   | Jump to a position               |
| `fastforward <position>` | `forward`, `ff`     | Skip ahead                       |
| `rewind <position>`      | `rw`                | Go back                          |
| `volume <volume>`        | `vol`               | Set the volume                   |
| `repeat <option>`        | `loop`              | track / queue / off              |
| `shuffle`                | `mix`               | Shuffle                          |
| `queue`                  | `q`                 | View the queue                   |
| `queue clear`            | `reset`, `clean`    | Empty it                         |
| `queue shuffle`          | `mix`               | Shuffle                          |
| `queue dedupe`           | `unique`, `rmdupes` | Remove duplicates                |
| `queue remove <filter>`  | `del`, `rm`         | Remove a track                   |
| `queue move <pos> <new>` | `mv`                | Reorder                          |
