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

# Giveaways

> Create giveaways with requirements that Lucie verifies live — voice, custom status, roles, and account age — with button-based entry.

Lucie runs giveaways where pressing a button isn't enough: you can set requirements that she **verifies live**, with counters tracking *how long* each one has been met. Everything is managed with `!sorteo`; typing it without arguments shows the system's help.

**Aliases:** `sorteos`, `giveaway`, `gw`

<Note>
  Creating and managing giveaways (`crear`, `fin`, `reroll`, `cancelar`, `track`) requires being the server owner or having **Administrator** or **Manage Server**. Looking things up (`lista`, `info`, `req` on yourself) is open to everyone.
</Note>

## !sorteo crear

Publishes a giveaway in the current channel (or in the one you specify with `--canal`).

**Usage:** `!sorteo crear <duration> [winners] <prize> [options]`

**Aliases:** `create`

**Permissions:** Manage Server

* **duration** — from **1 minute to 60 days**, in `s`/`m`/`h`/`d`/`w` format (e.g. `30m`, `12h`, `2d`, `1w`).
* **winners** — optional number from 1 to 20 right after the duration. If you leave it out, there's 1 winner.
* **prize** — free text.

<Tip>
  If the prize starts with a number (e.g. "10€ Steam credit"), always specify the number of winners first, or Lucie will interpret that number as the winner count.
</Tip>

### Requirements

Add as many options as you want at the end of the command. Anyone who doesn't meet them can't enter, and Lucie will tell them exactly what they're missing.

| Option                  | Requirement                                                                                                                                                                                                                                                                           |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--voz [min]`           | Be connected to a voice channel in the server (the AFK channel doesn't count). With a minimum (e.g. `--voz 1h`), requires having been connected for that long.                                                                                                                        |
| `--estado <text> [min]` | Have a text in your custom status (e.g. `--estado /lucie`). The text has no spaces (max 60 characters), is case-insensitive, and only needs to appear somewhere within the status. Accepts a minimum time (e.g. `--estado /lucie 1d`). Maximum of 2 status requirements per giveaway. |
| `--rol @role`           | Have the specified role (mention or ID).                                                                                                                                                                                                                                              |
| `--dias N`              | Have been in the server for at least N days (1–3650).                                                                                                                                                                                                                                 |
| `--cuenta N`            | Discord account at least N days old (1–3650) — useful against freshly created accounts.                                                                                                                                                                                               |

### Extras

| Option             | Effect                                                                                                                                          |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `--bonus @role x2` | Extra entries for that role (multiplier from ×2 to ×10). If someone has several bonus roles, the highest multiplier applies (they don't stack). |
| `--veto @role`     | Members with that role can't enter.                                                                                                             |
| `--canal #channel` | Publishes the giveaway in another text channel.                                                                                                 |
| `--sinrevalidar`   | Disables re-checking requirements when picking winners (see [how winners are chosen](#how-winners-are-chosen)).                                 |

**Examples**

```text theme={"dark"}
!sorteo crear 2d Nitro 1 mes
!sorteo crear 12h 3 Tarjeta regalo
!sorteo crear 2d 1 Nitro 1 mes --voz --estado /lucie 1d --dias 7
!sorteo crear 1w Nitro --rol @Nivel10 --bonus @Booster x3 --veto @Sancionado --canal #sorteos
```

<Note>
  A server can have up to **10 active giveaways** at once, and Lucie needs **Send Messages** and **Embed Links** in the channel where it's published.
</Note>

<Warning>
  On very large servers there is no initial status sweep: each member's `--estado` counter starts running on their next presence change. If you're going to require a minimum time, enable [pre-tracking](#sorteo-track) first.
</Warning>

## !sorteo lista

Shows the server's active giveaways: ID, prize, entrants, when they end, and a link to the message.

**Usage:** `!sorteo lista`

**Aliases:** `list`, `activos`

## !sorteo info

Shows the details of a giveaway by its ID: prize, requirements, entrants and, if it already ended, its winners (or whether it was cancelled). Finished giveaways remain viewable for 30 days.

**Usage:** `!sorteo info <id>`

**Examples**

```text theme={"dark"}
!sorteo info 4
```

## !sorteo fin

Ends a giveaway right now and picks the winners, without waiting for the scheduled date.

**Usage:** `!sorteo fin <id>`

**Aliases:** `end`

**Permissions:** Manage Server

## !sorteo reroll

Redraws an **already finished** giveaway among those who entered and still meet the requirements. Previous winners are excluded forever: a <Tooltip tip="Drawing again among the entrants to pick a different winner.">reroll</Tooltip> can never repeat a winner.

**Usage:** `!sorteo reroll <id>`

**Permissions:** Manage Server

<Note>
  Entries are kept for **24 hours** after the giveaway ends. After that window there are no candidates left for a reroll.
</Note>

## !sorteo cancelar

Cancels an active giveaway with no winners. Entries are deleted immediately, so a cancelled giveaway can't be rerolled.

**Usage:** `!sorteo cancelar <id>`

**Aliases:** `cancel`

**Permissions:** Manage Server

## !sorteo req

Checks which requirements a user meets and **since when**, giveaway by giveaway, plus whether they're entered and with how many entries. Without arguments it checks you across the active giveaways (up to 3); with an ID it checks that specific giveaway.

**Usage:** `!sorteo req [@user] [id]`

**Aliases:** `requisitos`, `estado`

**Permissions:** anyone can check themselves; checking others requires Manage Server.

**Examples**

```text theme={"dark"}
!sorteo req
!sorteo req 4
!sorteo req @usuario
```

## !sorteo track

<Tooltip tip="Counting voice time or status from now on, before the giveaway even exists.">Pre-tracking</Tooltip> for status texts: put a text under tracking **before** creating the giveaway and Lucie will start counting how long each member has had it in their status. Essential if you're going to require minimums like `--estado /lucie 1d` — otherwise everyone's counter would start from zero when the giveaway is created.

**Usage:** `!sorteo track [text]` · `!sorteo track off <text>`

**Aliases:** `seguimiento` (and `quitar` as an alternative to `off`)

**Permissions:** Manage Server

* Without arguments, lists the tracked texts.
* `track <text>` adds one (maximum of **5** per server).
* `track off <text>` removes it.

**Examples**

```text theme={"dark"}
!sorteo track /lucie
!sorteo track
!sorteo track off /lucie
```

## How to enter

Every giveaway is published with two buttons. All responses are private: only the person who presses sees them.

<Columns cols={2}>
  <Card title="Enter" icon="gift">
    If you meet everything, you're in (with your extra entries if you have a bonus role). If not, Lucie replies privately with the exact list of what you're missing — for example, "you've been in voice for 3 h, you need 1 d". Fix it and press again. If you were already entered, pressing again refreshes your entries in case your roles changed.
  </Card>

  <Card title="My status" icon="ticket">
    A private summary of your situation: each requirement marked as met or not, how long you've met it, and whether you're entered (with your entries and when you joined).
  </Card>
</Columns>

If you're entered, the private reply also shows a **Leave giveaway** button to drop out whenever you want. There's a small anti-spam interval between presses, and bots can't enter.

## How streaks count

<AccordionGroup>
  <Accordion title="Voice">
    Moving between voice channels keeps your streak. Joining the AFK channel counts as disconnecting.
  </Accordion>

  <Accordion title="Custom status">
    Removing the text from your status while online **breaks** the streak and the counter resets to zero. Going offline on Discord only **pauses** it — sleeping doesn't penalize you. Lucie only stores whether you have the text and since when, never the full content of your status.
  </Accordion>
</AccordionGroup>

## How winners are chosen

* The draw is random and **weighted by entries**: a ×3 bonus role triples your odds.
* When drawing, Lucie **re-validates** the candidates: anyone who stopped meeting the requirements (or left the server) is out, and bonus entries are recalculated with current roles. Disable it with `--sinrevalidar` at creation.
* Winners are announced with a mention in the giveaway channel and the original message is updated as finished. If no one entered (or no one still qualified), the giveaway ends without a winner.

<Tip>
  Questions, or something not working as expected? Drop by the [support server](https://discord.gg/VqyAZJ2mFc) or manage your server from the [web dashboard](https://lucie.elxy.dev).
</Tip>
