> For the complete documentation index, see [llms.txt](https://zoomiescore.gitbook.io/zoomiescore-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zoomiescore.gitbook.io/zoomiescore-docs/community/giveaways.md).

# giveaways

Run giveaways from the dashboard or from Discord. Both write to the same store, so a giveaway you started via `/gstart` shows up on the web and can be ended, rerolled, or inspected from either.

## Starting a giveaway

{% tabs %}
{% tab title="From the dashboard" %}
Dashboard → Giveaways → **Start giveaway**:

* Prize (up to 200 chars)
* Duration — `1h`, `30m`, `2d` syntax
* Number of winners (1–20)
* Channel to post in
* Optional required role (only members with this role can enter)
* Optional bonus-entry role with N× multiplier
  {% endtab %}

{% tab title="From Discord" %}

```
/gstart prize:"Nitro Classic" duration:2h winners:2 [required_role:@Verified] [bonus_role:@Booster] [bonus_entries:3]
```

{% endtab %}
{% endtabs %}

## Managing running giveaways

Each row on the Giveaways page has inline controls:

* **Entries** — opens a drawer listing every entrant with their bonus-role weight, sorted heaviest first.
* **End now** — draws winners immediately, edits the original embed, DMs winners.
* **Cancel** — deletes the giveaway (only allowed with 0 entries; use "End now" once anyone enters).
* **Reroll** (ended only) — picks fresh winners without changing the original entry list.

Slash commands still work:

```
/gend giveaway_id:<id>
/greroll giveaway_id:<id>
/gbonus giveaway_id:<id> role:@Booster entries:5
```

## Bonus-entry roles

Members in a bonus role count as **N× entries** in the weighted draw. Add or edit bonus roles at start OR while running with `/gbonus`. Set `entries: 1` to remove a bonus.

## Embed template editor ⭐ NEW

Dashboard → Giveaways → **Edit embed** opens a two-pane editor with a **live Discord-style preview** that updates as you type.

### Editable fields

* Title (live)
* Title (after ending)
* Description — full Markdown + placeholders
* Color (live) + Color (ended)
* Footer
* Thumbnail URL
* Image URL

### Placeholders

| Token                | Resolves to                             |
| -------------------- | --------------------------------------- |
| `{prize}`            | The prize text                          |
| `{winners_count}`    | Number of winners                       |
| `{ends_at}`          | Full timestamp (Discord auto-localises) |
| `{ends_in}`          | Human duration remaining, e.g. `2h 30m` |
| `{ends_relative}`    | `in 2 hours` (Discord auto-formats)     |
| `{entry_count}`      | Unique entrants                         |
| `{weighted_entries}` | Total after bonus-role weighting        |
| `{required_role}`    | Role mention (or empty)                 |
| `{bonus_roles}`      | Bonus-role lines (or empty)             |
| `{status}`           | `Live` or `Ended`                       |
| `{winners}`          | Winner mentions (empty until end)       |

Saved templates apply to every **new** giveaway; existing giveaways keep the embed they were created with.

**Reset to default** wipes the saved template and brings back the built-in look.
