Key Pool lets you maintain a standing pool of claimable keys or codes that members can access at any time. Unlike a giveaway, there's no timer or draw: members claim directly when they're ready, and the pool stays open until you close or deplete it.
Built for beta access programs, VIP extras, and any scenario where you want controlled, auditable key distribution without running a timed event.
What makes it different
- Persistent, not event-based. A pool stays open until you deactivate it. No countdown, no draw, meaning members can claim at any time.
- Role gating with up to three roles. Restrict claiming to specific roles so only the right members can access a pool.
- Per-member claim limits. Set how many keys a single member can claim from a pool.
- Live status embed. When a pool is activated, a V2 status embed posts to your log channel and updates on every action, showing the progress bar, approved role(s), stats, and a rolling activity log.
- Depletion alerts. Ping a role automatically at 50%, 80%, 95%, and 100% claimed status. Top up to stay ahead of the curve with a single command.
- Spoiler key delivery. Keys are delivered as spoiler tags so members have to tap to reveal them. No accidental exposure in screenshots.
- Retrieve unclaimed keys. Pull all remaining keys back out of a pool at any time to reuse or redistribute elsewhere.
- Legal compliance built in. Configure a No Purchase Necessary disclaimer and Terms link once via
/keypool setup, and they appear automatically on all pool and giveaway messages. - 30-day data retention and CSV exports. Claimer user IDs are automatically wiped 30 days after a pool closes to comply with Discord's data retention policy. Export first if you need the records.
Setup
create → add keys → activate → members claim → auto-track depletion
Run /keypool create to open the setup modal. Give the pool a name, an optional description (shown on the status embed), a max keys per user value, up to three allowed roles, and optionally paste in your first batch of keys directly. Then run /keypool activate to open it for claiming.
If you have more keys to load after creation, use /keypool addkeys with a .txt file (one key per line). Adding keys to a depleted pool automatically reactivates it.
Use /keypool setalerts to set a role to ping at depletion milestones, and /keypool setup to configure legal disclaimers if needed. These are shared with the Giveaway feature, so you only set them once.
Members claim with /access claim. Deactivate the pool with /keypool deactivate when done. Closing a pool starts the 30-day retention clock on claimer data. Run /keypool export before closing if you need to archive those records.
Commands
/keypool setup - Configure legal disclaimers for pool and giveaway messages (Terms page & NPN disclaimer) and set a logging channel. Legal settings are shared between both features.
/keypool create - Open the create modal. Set the pool name, optional description, max keys per user, up to three allowed roles, and optionally paste initial keys.
/keypool addkeys - Upload a .txt file to load additional keys into a pool. One key per line. Automatically reactivates a depleted pool.
/keypool activate - Open a pool for claiming and post the live status embed to the log channel.
/keypool deactivate - Close a pool and stop new claims. Starts the 30-day data retention clock.
/keypool retrieve - Pull and remove all unclaimed keys from a pool to reuse elsewhere. Only shared with you.
/keypool export - Export claimer data for a closed or depleted pool as a CSV file. Only available after closing. Sends a reminder if the 30-day retention window is approaching.
/keypool list - List all pools for this server with status icons and key counts.
/access claim - Member-facing. Claim a key from an available pool. If multiple pools are available to the member, the bot lists them and prompts them to pick one. Already-claimed keys are shown again if they run it a second time.
Troubleshooting
- Pool not visible to members: the pool must be active. Run
/keypool activate. - Role-gated pool not showing in autocomplete: the member does not have any of the required roles assigned.
- No keys to claim: the pool is depleted. Upload more with
/keypool addkeysand it will reactivate automatically. - Status embed not updating: confirm the bot has Send Messages and Embed Links permissions in the log channel.
- Alert pings not firing: confirm a role is set via
/keypool setupand that the bot has permission to mention that role. - Export not available: export is only available on closed or depleted pools. Deactivate the pool first.
- Export shows no data: claimer records have already been wiped. Data is removed 30 days after a pool closes. Use
/keypool exportbefore or shortly after closing to preserve records.