Skip to content

Plugin Enhancement: Giveaways — role reqs, boost gates, multi-giveaways, bonus entries #34

Description

@DeadIndian

Plugin Enhancement: Giveaways — role requirements, server boost gates, multi-giveaways

Enhance adb-plugin-giveaways with entry requirements, role gates, scheduled multi-giveaways, and entry tracking.

Why

The current giveaways plugin works but lacks the advanced features users expect: restricting entries to certain roles, requiring invite counts, running multiple giveaways at once, and tracking entry history.

Spec

New Features:

1. Entry Requirements

  • /giveaway require-role <message-id> <role> — Restrict entry to a specific role
  • /giveaway require-level <message-id> <level> — Minimum level to enter (levels plugin integration)
  • /giveaway require-invites <message-id> <count> — Minimum invites (invite tracker integration)
  • /giveaway require-boost — Only server boosters can enter
  • /giveaway require-account-age <message-id> <days> — Min Discord account age
  • Combined requirements shown on giveaway embed

2. Multi-Winner Enhancements

  • /giveaway start ... winners:5 role:@winner — Each winner gets a different role reward
  • Tiered prizes: 1st place gets Role A, 2nd gets Role B, 3rd gets Role C
  • /giveaway start ... prize:"Role A, Role B, Role C" — Tiered prize list syntax

3. Scheduled Giveaways

  • /giveaway schedule <time> <prize> [duration] [winners] — Schedule a future giveaway
  • /giveaway schedule list — View scheduled giveaways
  • /giveaway schedule cancel <id> — Cancel a scheduled giveaway
  • Recurring giveaways: /giveaway schedule every <cron> <prize> [winners]
  • Uses Timer/Scheduler system for delayed execution

4. Entry Tracking & History

  • /giveaway entries <message-id> — Count of entries (staff only)
  • /giveaway history [user] — Giveaways won by a user
  • /giveaway stats — Server giveaway stats (total giveaways, prizes given, total entrants)
  • Entry audit log channel option

5. Bonus Entries

  • /giveaway bonus <message-id> <role> <extra-entries> — Members with a role get X extra entries
  • /giveaway bonus-boost <message-id> <extra-entries> — Boosters get extra entries
  • Display: "You have 3 entries (base: 1, booster bonus: 2)"

6. UI/UX Improvements

  • Live entry count on embed (updates every entry, not just on end)
  • Progress bar for entry requirements (e.g., "[==== ] 4/10 invites")
  • "Entered ✅" button state for users who already entered
  • Auto-thread on giveaway for discussion/tagging friends
  • Giveaway end countdown (editable embed with live timer)

Config Schema Additions:

{
  "defaultDuration": "1h",
  "maxWinners": 10,
  "maxActiveGiveaways": 5,
  "requireLevelIntegration": true,
  "requireInviteIntegration": true,
  "bonusEntriesEnabled": true,
  "entryLogChannel": null,
  "autoThreadOnStart": false,
  "maxBonusEntries": 10
}

Acceptance Criteria

  • Role, level, invite, and account-age entry requirements enforced
  • Tiered prize distribution per winner position
  • Scheduled giveaways with cron oversight
  • Bonus entries for boosters/roles
  • Entry history and stats command
  • Live entry count on embed

Metadata

Metadata

Assignees

No one assigned

    Labels

    plugin-enhancementEnhancement to an existing plugin (add features, improve UX)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions