Repository navigation
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.
- Go to the Discord Developer Portal and New Application.
- Open Bot and copy the token — this is the
DISCORD_TOKENvalue. Treat it like a password; if it leaks, reset it here. - Open General Information and copy the Application ID — this is
CLIENT_ID.
Both values go in hom.env — see Configuration.
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.
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 |
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).
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.
npm run deployWhether 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.
- Deploying to a server → Host Installation
- Configuring it inside Discord → Server Configuration