Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/devjhoan/absolet/llms.txt

Use this file to discover all available pages before exploring further.

Absolet includes a fully-featured giveaway system powered by discord-giveaways. Staff members can launch timed giveaways with custom prizes, winner counts, and optional entry requirements based on levels, invites, or message count. When the timer expires the bot selects winners automatically and announces them in the channel.

How Giveaways Work

  1. A staff member runs /giveaway and selects Create to open the setup wizard.
  2. The bot posts a giveaway embed in the specified channel showing the prize, number of winners, host, and a countdown timestamp.
  3. Server members react with πŸŽ‰ to enter. The reaction is the entry mechanism β€” no slash commands are required from participants.
  4. When the end time is reached, the bot picks the configured number of winners at random, updates the embed to show the results, and replies in the channel with a winner announcement.
Bots are excluded from winning by default (botsCanWin: false).

Creating a Giveaway

Run /giveaway and click the πŸŽ‰ Create button to open the creation wizard. The wizard walks you through each required and optional field using button prompts:
FieldRequiredDescription
Channel πŸ›’βœ…The text channel where the giveaway embed is posted. Mention the channel when prompted.
Time β³βœ…How long the giveaway runs. Accepts human-readable durations like 30m, 2h, 1d.
Winners πŸ‘‘βœ…How many winners will be selected. Must be a positive integer.
Prize πŸŽβœ…The prize being given away (plain text).
Description πŸ“°βœ…A short description shown in the giveaway embed body.
Image πŸ–ΌβŒUpload an image attachment to display in the embed.
Requirements 🍱❌Entry requirements (see below).
Once all required fields are filled, a green βœ”οΈ Save button appears. Clicking it starts the giveaway immediately.
Button labels turn blue (Primary) once their value has been set, making it easy to track your progress through the wizard.

Entry Requirements

Open the Requirements panel from within the creation wizard to gate entry behind server activity thresholds:
RequirementButtonDescription
Level ✨rq-levelsMinimum XP level the user must have reached
Invites πŸ‘₯rq-invitesMinimum number of successful invites the user has brought in
Messages 🌟rq-messagesMinimum total messages sent in the server
Enter 0 for any requirement to remove it. When requirements are set, the giveaway embed switches to the GiveawayWithRequirements template which lists each threshold so participants can see what they need. Users who react but do not meet the requirements are excluded from the winner draw automatically.

Managing Active Giveaways

All management actions are accessible from the same /giveaway command panel:

⏸️ Pause

Freezes an active giveaway’s countdown. The giveaway remains posted but the end time is set to Infinity until resumed.

▢️ Resume

Resumes a previously paused giveaway, restoring its countdown timer.

πŸ” Reroll

Re-selects winners from the original entry pool for an already-ended giveaway. Useful if an original winner is unable to claim their prize.

⏹️ End

Immediately ends an active giveaway and triggers winner selection, regardless of remaining time.
Selecting any of these actions opens a select menu listing all eligible giveaways by prize name. Pick one to apply the action.

Winner Notifications

When a giveaway ends, Absolet announces the winners in the channel. The winner message content is taken from the GiveawayWinMessage string in messages.yml and is fully customisable. If no valid participants entered (or all participants failed requirement checks), the bot posts the GiveawayContentNoWinners string in the channel instead.

Configuration Reference

Giveaway data is persisted in MongoDB via the giveaways collection. Key fields stored per giveaway include:
{
  messageId: string;       // Discord message ID of the giveaway embed
  channelId: string;       // Channel the giveaway is posted in
  guildId: string;
  startAt: number;         // Unix timestamp (ms)
  endAt: number;           // Unix timestamp (ms); Infinity when paused
  ended: boolean;
  winnerCount: number;
  prize: string;
  hostedBy: string;        // Discord user ID of the host
  botsCanWin: boolean;     // Always false β€” bots cannot enter
  extraData: {
    description: string;
    image: string;
    requirements: {
      levels: string;
      messages: string;
      invites: string;
    };
  };
}

Build docs developers (and LLMs) love