1 GrumpyGiveaways EN
darksoon edited this page 2026-07-11 01:05:01 +02:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Giveaways — Raffles with Buttons

GrumpyGiveaways starts time-limited raffles with an entry button, automatically draws winners when they end, and allows manual ending and re-rolling.


Activation

In configs/config.yml:

addons:
  giveaways: true   # Default: true

No dedicated configs/modules/giveaways.yml — the module has no YAML config file. All data (active/ended giveaways, entries) is stored exclusively in the database.


Commands

All subcommands require the Manage Guild permission.

/giveaway start <duration> <prize> [winners] [required-role] [channel]

Starts a new giveaway.

Option Required Description
duration yes Duration, e.g. 30m, 1h, 3d (units: s, m, h, d, combinable like 1h30m)
prize yes What's being given away (max. 256 characters)
winners no Number of winners, 120 (default: 1)
required-role no Role required to enter
channel no Target channel (Text or Announcement) — default: current channel
/giveaway start duration:1h prize:Discord Nitro
/giveaway start duration:3d prize:Steam Key winners:3 required-role:@Booster channel:#giveaways

/giveaway end <id>

Ends a running giveaway immediately and draws the winners.

/giveaway end id:<pick a giveaway via autocomplete>

The id option has autocomplete — it lists active giveaways, searchable by prize name.


/giveaway reroll <id>

Draws new winners for an already-ended giveaway from the same entry pool (does not exclude previous winners).

/giveaway reroll id:<pick an ended giveaway>

Here the id option's autocomplete lists the most recently ended giveaways (up to 25).


/giveaway list

Lists all of the server's active giveaways with prize, channel, relative end time, and short ID.

/giveaway list

Entering via Button

Every giveaway message has a 🎉 Enter-button:

  • Clicking toggles entry: clicking again leaves the giveaway — no second command needed.
  • If a required-role is set, it's checked on click; if missing, the user gets an ephemeral error instead of being entered.
  • Once the giveaway has ended, the button is disabled and a click on an already-ended giveaway is rejected.
  • All responses to the button are ephemeral (visible only to the clicking user).

Lifecycle & Drawing

  • A background job checks every 30 seconds whether any giveaways are due (end time reached).
  • On expiry, the original message is edited (embed status → "ended", button disabled) and a result message with the winners is posted (including a mention ping).
  • Drawing: Winners are picked randomly from all entrants, without replacement. If there are fewer entrants than winners requires, fewer (or zero) winners are drawn accordingly.
  • /giveaway end works identically, just triggered manually and immediately — useful for ending a giveaway early.
  • /giveaway reroll draws again from the same entry pool — note: previously drawn winners can be drawn again, they are not excluded.
  • Ended giveaways remain in the database (for /giveaway reroll autocomplete) and cannot be deleted via commands.

Embed Display

The giveaway embed shows:

Field Content
Title 🎉 + prize
Winners Number of winners to be drawn
Entries Current entry count (live)
Host Who started the giveaway
Required role Only shown if a required-role is set
Footer / Timestamp Relative end time (active) or "Giveaway ended"

Color: green (active) → gray (ended).