Skip to content

Bot Setup

Jerad Berhow edited this page Oct 6, 2026 · 10 revisions

Bot Setup

Creating the Discord application and getting the bot into a server. If you are deploying to a Linux host, do this first, then see Host Installation.

1. Create the Discord application

  1. Go to the Discord Developer Portal and New Application.
  2. Open Bot and copy the token — this is the DISCORD_TOKEN value. Treat it like a password; if it leaks, reset it here.
  3. Open General Information and copy the Application ID — this is CLIENT_ID.

Both values go in hom.env — see Configuration.

Gateway intents

PariahBot needs three intents, none of which are privileged, so there is nothing to toggle in the Developer Portal and no verification to apply for:

Intent Needed for
Guilds Everything
Guild Voice States Temporary voice channels
Guild Messages Message auto-deletion, honeypot, activity XP

The member verification captcha deliberately works from a button in a screening channel rather than listening for join events, specifically so the bot does not need the privileged Guild Members intent.

2. Permissions

Every permission the bot actually uses. Omitting one only breaks the features beside it — the rest keep working.

Permission Needed for
View Channels Everything
Send Messages Command replies, role menus, alerts, verification and honeypot messages
Embed Links Embeds, which nearly every command replies with
Read Message History /autodelete reading channel backlog and pins; re-finding messages the bot posted earlier
Manage Channels Creating/deleting channels and categories (/voice, temp channels, /alerts default channel, /security channels); /vc name and /vc limit
Manage Roles Channel permission overwrites, creating roles via /setup, granting roles for role menus and the captcha
Move Members Moving members into their temp voice channel; /vc kick
Connect /vc lock and /vc unlock — the bot grants itself Connect before denying it to @everyone, and Discord only lets it set a permission bit it already holds
Manage Messages /autodelete deleting other people's messages
Ban Members The /security honeypot — required even for its default "remove", which is a softban (ban then immediate unban). Kick Members is not needed

3. Invite the bot

The hosted instance:

https://discord.com/api/oauth2/authorize?client_id=844591688130232321&permissions=286354452&scope=bot%20applications.commands

Self-hosting your own application — substitute your own ID:

https://discord.com/api/oauth2/authorize?client_id=YOUR_APPLICATION_ID&permissions=286354452&scope=bot%20applications.commands

286354452 is the bitfield for exactly the permissions in the table above. Scopes are bot (join the server) and applications.commands (register slash commands).

4. Fix the role hierarchy

Do this immediately after inviting. In Server Settings → Roles, drag PariahBot above:

  • the member role the captcha grants
  • any role offered through a role menu
  • anyone the honeypot should be able to remove

Discord ignores a bot trying to act on anyone whose highest role is above its own, regardless of permissions. /security captcha setup checks this up front and refuses with an explanation; the other features just fail at the moment you use them, which is much harder to diagnose.

5. Register the commands

npm run deploy

Whether commands appear in one server or all of them depends on GUILD_ID:

GUILD_ID Result
Set to a server ID Registers to that server only, instantly. Ideal while developing.
Empty or absent Registers globally — every server the bot is in. Can take up to an hour to appear.

Re-run npm run deploy after adding, removing or changing any command definition. See Troubleshooting if commands don't show up.

Next

Clone this wiki locally