> ## 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.

# Giveaways

> Run giveaways with entry requirements based on roles, account age, invites or message count.

Requires **Manage Messages**.

## Starting one

```javascript theme={null}
!giveaway start #giveaways 24h 1 Discord Nitro
```

Arguments are the **channel**, **duration**, **number of winners** and the **prize**.

<CodeGroup>
  ```javascript Three winners over a week theme={null}
  !giveaway start #giveaways 7d 3 Steam Key
  ```

  ```javascript End early theme={null}
  !giveaway end
  ```

  ```javascript Reroll theme={null}
  !giveaway reroll
  ```

  ```javascript See who entered theme={null}
  !giveaway entrants
  ```
</CodeGroup>

Aliases: `create`, `new` / `stop` / `redraw` / `entries`. Each takes an optional giveaway to target — leave it off for the most recent.

## Entry requirements

Requirements are set **per giveaway**. Leave the giveaway argument off to target the most recent one.

<AccordionGroup>
  <Accordion title="Require a role" icon="user-tag">
    ```javascript theme={null}
    !giveaway role @Booster
    !giveaway role view
    !giveaway role remove
    ```

    Aliases: `rolereq`, `reqrole`. The obvious pairing is a booster-only giveaway as a boost incentive.
  </Accordion>

  <Accordion title="Minimum account age" icon="user-clock">
    ```javascript theme={null}
    !giveaway minimum account 30d
    !giveaway minimum account view
    !giveaway minimum account remove
    ```

    Blocks alt accounts made to farm entries. Aliases: `acc`.
  </Accordion>

  <Accordion title="Minimum time in the server" icon="calendar">
    ```javascript theme={null}
    !giveaway minimum member 7d
    ```

    Stops people joining purely for the giveaway and leaving after. Aliases: `mem`.
  </Accordion>

  <Accordion title="Minimum messages sent" icon="message">
    ```javascript theme={null}
    !giveaway minimum messages 100
    !giveaway minimum messages 50 7d
    ```

    The optional period scopes it — `50 7d` means 50 messages in the last week, which rewards *current* activity rather than someone who was busy two years ago. Aliases: `msg`, `msgs`.
  </Accordion>

  <Accordion title="Minimum invites" icon="user-plus">
    ```javascript theme={null}
    !giveaway minimum invites 5
    !giveaway minimum invites 3 30d
    ```

    Needs [invite tracking](/utility/server-insight#invite-tracking) to be meaningful. Aliases: `inv`, `invite`.
  </Accordion>

  <Accordion title="Blacklist roles" icon="ban">
    ```javascript theme={null}
    !giveaway blacklist @Muted
    !giveaway blacklist view
    ```

    Blacklisted roles can't enter regardless of other requirements. Alias: `bl`.
  </Accordion>
</AccordionGroup>

Every requirement has `view` and `remove` subcommands.

<Tip>
  Message-count requirements are the most effective anti-farm measure, because unlike account age they can't be waited out. `!giveaway minimum messages 50 7d` means only people who are actually here can win.
</Tip>

## A worked example

A booster-only giveaway with real requirements:

```javascript theme={null}
!giveaway start #giveaways 7d 1 Nitro Classic
!giveaway role @Booster
!giveaway minimum account 30d
!giveaway minimum member 7d
!giveaway minimum messages 50 30d
!giveaway blacklist @Muted
```

## Things worth knowing

* Requirements are checked **at entry**, and again when winners are drawn — so someone who leaves or loses the required role after entering can't win.
* `reroll` excludes previous winners, so rerolling picks someone new.
* Ending early still respects the winner count.
* If nobody qualifies, the giveaway ends with no winner rather than picking someone ineligible.

## Command reference

| Command                                                  | Aliases              | Description            |
| -------------------------------------------------------- | -------------------- | ---------------------- |
| `giveaway start <channel> [duration] [winners] <prize>`  | `create`, `new`      | Start a giveaway       |
| `giveaway end [giveaway]`                                | `stop`               | End early and draw     |
| `giveaway reroll [giveaway]`                             | `redraw`             | Draw a new winner      |
| `giveaway entrants [giveaway]`                           | `entries`            | Who entered            |
| `giveaway role [giveaway] <role>`                        | `rolereq`, `reqrole` | Require a role         |
| `giveaway role view [giveaway]`                          | `check`              | View the requirement   |
| `giveaway role remove [giveaway]`                        | `delete`, `none`     | Remove it              |
| `giveaway minimum account [giveaway] [duration]`         | `acc`                | Minimum account age    |
| `giveaway minimum member [giveaway] [duration]`          | `mem`                | Minimum time in server |
| `giveaway minimum messages [giveaway] [amount] [period]` | `msg`, `msgs`        | Minimum messages       |
| `giveaway minimum invites [giveaway] [amount] [period]`  | `inv`                | Minimum invites        |
| `giveaway blacklist [giveaway] <role>`                   | `bl`                 | Blacklist a role       |
| `giveaway blacklist view [giveaway]`                     | `list`, `ls`         | View the blacklist     |

Every command requires **Manage Messages**. Group aliases: `giveaways`, `gw`.
