Server Configuration - CosmicCubicle/PariahBot GitHub Wiki
Setting the bot up inside a Discord server. Order matters — several features depend on roles configured in step 1 and will refuse to run without them.
Staff come in two levels: admins (Administrator, or an admin role) and
mods (a mod role, or any admin). /setup and /security are admin-only;
most of the rest is for mods. See Server-Roles. Manage
Channels alone is not enough.
Full guide: Server-Roles.
/setup admin-role add role:@Admins
/setup mod-role add role:@Moderators
/setup member-role role:@Members
-
Admin roles — who counts as an admin besides Administrators:
/setup,/security, the dashboard and the policy settings. Any number can be added. -
Mod roles — staff below admin: moderation and the rest of the staff commands. Any number can be added (
/setup mod-role add,remove,list,clear). Mod-role members are also skipped by the honeypot and can override temp-channel ownership via/vc claim. -
Member role — the role the verification captcha grants, and the role
/roles apply-channel-defaultsmakes channels visible to./security captcha setuprefuses to run until this is set.
Don't have the roles yet? Create them inline instead of pointing at existing ones:
/setup member-role name:Members color:#3498db
color accepts a hex code or a Discord colour name (Red, DarkBlue,
Blurple…).
/setup streamer-role sets the role whose members can link their own Twitch or
YouTube channel for alerts. See step 7.
Full guide: Temp-Voice-Channels.
/voice create name:➕ Join to Create
Anyone who joins that hub gets their own temporary channel, and becomes its
owner. Owners manage their own channel with /vc (name, limit, lock,
unlock, kick, claim, transfer) — /vc is not admin-gated, it's scoped
to whoever currently owns the channel they're in.
Channels are deleted automatically once empty. If a hub's channel gets deleted
manually, /voice audit finds the orphan and offers to prune or recreate it.
To use an existing voice channel as a hub instead: /voice add hub:#channel.
Optional, per hub and per server:
/voice edit hub:<pick> name_template:🎮 {owner}'s squad default_limit:4 min_limit:2 max_limit:10
/voice owner-control control:Kick allowed:False
-
/voice editsets what temp channels are called, the limit they start at, the range owners can choose, and their category. -
/voice owner-controlswitches off any owner control exceptclaim. - The Admin-Dashboard's Voice tab does all of this, and also lists live temp channels so you can close or transfer them.
Full guide: Role-Menus.
/roles dropdown create channel:#roles role:@Gamer descriptor:Ping for game nights
/roles dropdown add-role message:<id> role:@Artist descriptor:Art channel access
Posts a message with a button; members open a personal dropdown, pre-checked
with the roles they already have, and tick/untick to assign or remove. One role
per command call — repeat add-role to build the menu up.
/roles apply-channel-defaults channel:#roles locks that channel so only
admins and the bot can post, and only the member role can see it.
Full guide: Verification and Honeypot.
/security captcha setup adjust_visibility:true
/security honeypot setup
Captcha posts a verification message in a screening channel (created for
you, or pass channel:). A member presses Start verification and is privately
asked to pick one specific option from a dropdown — which option is correct is
randomised per person, so a bot can't pass by clicking the only thing on
screen. Passing grants the member role.
adjust_visibility: true turns verification into an actual gate, in two parts:
-
The rest of the server is hidden from unverified members —
View Channelsis removed from@everyoneand granted to the member role instead. One role-level change, so it also covers channels created later. - The screening channel itself becomes visible only to unverified members and your admin and mod roles. Once someone verifies and receives the member role, the channel disappears for them rather than sitting there as clutter.
Mods keep access because a role-level allow beats a role-level deny in Discord's permission maths, so a mod who also holds the member role still sees it. With no admin or mod roles configured, only Administrators can see it (they bypass overwrites entirely).
This is a server-wide change — it's off by default, and the bot reports
exactly what it altered. Re-running with adjust_visibility: false clears the
screening channel restriction again. To fully undo it, give @everyone
View Channels back and clear the member role's View Channels deny on the
screening channel.
Honeypot designates a trap channel and posts a warning in it. Anyone who
posts there is removed — by default a softban (banned then immediately
unbanned, so Discord deletes their recent messages but they can rejoin), or
action: ban to ban outright.
Staff (admins and mods) are always skipped, so you can safely look at the channel yourself. Every action is reported through
/alerts.
Tip: name the trap channel something plausible like #off-topic-2 rather than
#honeypot — some spam bots skip channels named "honeypot", and position it near
the top of the channel list where bots tend to post first.
Full guide: Auto-Delete.
/autodelete set channel:#spam duration:24h count:100
Deletes each message once it's duration old, or once count newer messages
exist — whichever comes first. Supply either or both. Durations take h/m/s
and combinations (24h, 30m, 90s, 1h30m).
Pinned messages are never deleted, so pin anything that should survive.
Full guide: Admin-Alerts.
/alerts channel channel:#bot-alerts
/alerts add-recipient user:@You
/alerts test
Where the bot reports things that need attention — honeypot removals, voice hubs
whose channel vanished. Set this up: nothing is configured by default, and
alerts in a server with no destination are dropped. Either point it at a channel
you already have, or run /alerts restore-default to have the bot make a
#bot-alerts channel for you.
Needs Twitch and/or YouTube credentials in the host's hom.env first. See
Streamer-Alerts.
/streamers channel channel:#live-now ping_role:@Stream-Notify
/setup streamer-role role:@Streamer
/streamers add platform:YouTube account:@SomeChannel
-
Streamers with the role link their own channel with
/streamers link. Their alerts stop if they lose the role. -
Admins can add any channel with
/streamers add, with no role needed and an optionalmember:. - Twitch announces going live. YouTube announces going live and new uploads.
-
/streamers messagesets custom text for alerts, and still pings the role. - Only uploads and streams after a channel is added are announced.
Needs the Instagram token in the host's hom.env first. See
Instagram-Alerts.
/instagram channel channel:#instagram ping_role:@Insta-Notify
/instagram add account:some_account
- Posts go to their own channel, separate from streamer alerts.
-
/instagram messagesets custom text for posts, and still pings the role. - Only public Business or Creator accounts can be followed.
- Only posts after an account is added are shared.
Needs the bot to have Manage Server. See Banned-Words.
/bannedwords list add list:Profanity
/bannedwords word add words:badword, bad phrase
/bannedwords enable
- Discord AutoMod blocks matching messages before anyone sees them.
- Each block is reported through the admin alerts from step 6.
- Exempt channels or roles in Server Settings → AutoMod, on the PariahBot: banned words rules.
Full guide: Moderation.
/mod timeout member:@Someone duration:1h reason:Cool off
/mod ban user:@Spammer reason:Spam delete_messages:Last 24 hours
/mod ban user:@Someone duration:7d reason:Repeated warnings
/mod warn member:@Someone reason:Keep it civil
/mod history user:@Someone
Optional settings:
/mod config escalation warnings:3 within:7d timeout:1h
/mod config appeal-note text:Appeal at https://example.com/appeal
- Also on the right-click menu: a member → Apps → Kick member, Ban member or Timeout member.
- Needs no setup. The bot needs Kick Members, Ban Members and Timeout Members, and its role above the people it acts on.
- Staff (admins and mods) can never be targeted. Every action is DMed to the member, kept in their
/mod history, and reported through the alerts from step 6.
Full guide: RSS-Feeds.
/rss add url:https://www.reddit.com/r/discordapp/.rss channel:#news
/rss test feed:<pick>
- Each feed posts to its own channel, with an optional ping role and custom message.
- Only new items are posted, checked every 10 minutes.
- Addresses on private or local networks are refused.
A record of what happens in the server, in up to four channels. Full guide: Server-Log. Needs View Audit Log on the bot's role for the kicks, bans and server changes sections.
/logging set section:Kicks and bans channel:#mod-log
/logging set section:Joins and leaves channel:#join-log
/logging set section:Messages channel:#message-log
/logging set section:Server changes channel:#mod-log
/logging status
- Each section has its own channel and its own on/off switch (
/logging disable,/logging enable). Sections can share a channel. - Keep the log channels staff-only: they show who did what, and possibly what members wrote.
- Message text in the Messages section is the bot host's choice, not the server's.
/giveaway and /level need no setup. Full guides: Giveaways and
Activity-Levels.
-
/giveaway create prize:… duration:<minutes> winners:<n>— members enter via a button, winners are drawn automatically when it ends./giveaway end id:<id>ends one early. -
/level— XP accrues automatically from messages (15–25 per message, once per minute per person)./level rankand/level leaderboardare open to everyone.
/security status # captcha + honeypot state, warns if the member role is missing
/autodelete status # per-channel auto-delete settings
/voice list # configured hubs
/roles list # configured role menus
/alerts status # where alerts are going
/streamers list # alert channel, platforms switched on, and every streamer
/instagram list # Instagram channel, host setup, and every followed account
/bannedwords status # banned words on/off, lists, custom words, where blocks go
/rss list # every feed, its channel, last check and any error
/logging status # each server log section, its channel, and anything stopping it
/alerts test # actually send one