Guide
Setup wizard
Every server runs under its own Discord application. You create it, Keepcord hosts it. The wizard walks you through the application, the privileged intents, the invite and the first configuration.
Shared bots get rate-limited together and banned together. With your own application the bot carries your name and avatar, its rate limits are yours alone, and nobody else can ever hold the tokens of your members. Keepcord stores your bot token and client secret encrypted (AES-256-GCM) and only uses them to run the process and to re-add members.
All three privileged intents are required
Server Members, Message Content and Presence intents must be enabled on the Bot page of the Developer Portal. Keepcord checks the flags of the application through the Discord API before the wizard lets you continue. Without them backups of messages, join tracking and anti-nuke cannot work.- 1
Open the Discord Developer Portal
discord.com/developers/applications → New Application. The name is what members will see on the bot, you can change it later. - 2
OAuth2 → copy Client ID and reset the Client Secret
The secret is shown once. Keep the tab open, you will paste both into Keepcord. - 3
OAuth2 → add the redirect URL
Add exactlyhttps://api.keepcord.app/verify/callback. Members are sent here after authorizing; a wrong redirect makes Discord show "Invalid OAuth2 redirect_uri". - 4
Bot → Reset Token
Copy the token. Treat it like a password: anyone with the token controls the bot.
Still on the Bot page, scroll to Privileged Gateway Intents and switch on all three. Applications in fewer than 100 servers can enable them without review.
| Intent | Used for |
|---|---|
| Server Members | Join tracking, auto-kick of unverified members, role restore on pull, member snapshots in backups. |
| Message Content | Message backups (text, embeds, attachments), restore of messages through webhooks. |
| Presence | Online indicators in the dashboard member list; required by Discord to be consistent with the others. |
Back in the wizard, paste the name, client id, client secret and token. Keepcord verifies them live:
- the token must belong to a bot whose application id equals the client id,
- the client secret is exchanged for a client-credentials token to make sure it is valid,
- the application flags are read from
GET /applications/@meto confirm the intents.
Within fifteen seconds the Keepcord bot process picks the new application up, logs in to the gateway and reports a heartbeat. The wizard waits for that heartbeat before moving on, and the Re-check button re-reads the intents if you enabled them after registering.
POST /api/botapps name, clientId, clientSecret, token
├─ GET https://discord.com/api/users/@me (bot token) → id must equal clientId
├─ POST https://discord.com/api/oauth2/token (client secret) → must return 200
└─ GET https://discord.com/api/applications/@me (bot token) → flags: GATEWAY_GUILD_MEMBERS,
GATEWAY_MESSAGE_CONTENT, GATEWAY_PRESENCE
bot process (every 15 s) → reconciles BotApp rows, logs in, heartbeat every 30 s
wizard → GET /api/botapps/:id/status until lastOnlineAt is freshThe wizard builds the invite link for your application with the permission set below. Keepcord polls until the bot joins, then continues automatically.
| Permission | Why |
|---|---|
| Manage Roles | Give the verified role, restore roles on pull, recreate roles on restore. |
| Manage Channels | Recreate channels and categories on restore. |
| Manage Server | Restore server settings (name, icon, verification level, AFK, system channel). |
| Manage Webhooks | Re-post backed-up messages with the original author name and avatar. |
| Manage Expressions | Restore emojis and stickers. |
| Kick / Ban Members | Auto-kick unverified members, restore bans, anti-nuke actions. |
| Create Invite | Member pull uses guilds.join and needs the bot to be able to add members. |
| View Audit Log | Anti-nuke attribution: who deleted what. |
| Send Messages, Embed Links, Attach Files, Read History | Verify message, reports in the log channel, message backups. |
Pick the channel where the Verify button lives, the role (or roles) members receive after verifying, the log channel for reports and optionally an alert channel for incidents. The wizard then posts the verify message with your template. Everything can be changed later under Verification and Messages.
The same setup is available from Discord with /setup, and the verify message can be re-posted at any time with /verify-embed.
The panel is locked until the wizard is completed or skipped. Skip for now opens the panel without a bot: verification and backups stay off until an application is attached. You can reopen the wizard from Billing → Run setup again, and manage every registered application under Developer → Bot apps. After a token leak, reset the token in the Developer Portal, remove the app in Keepcord and register it again.