Repository navigation
Server Configuration
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.
Every command below is admin-gated: you need Discord's Administrator
permission, or membership in a role added via /setup mod-role add. Manage
Channels alone is not enough.
/setup mod-role add role:@Moderators
/setup member-role role:@Members
-
Mod roles — who can use the bot's admin commands besides Administrators. 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 also exists and is stored, but nothing consumes it yet.
/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.
/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.
/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 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 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.
Admins and mod-role members 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.
/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.
/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. If you don't configure anything, the bot creates a
default #bot-alerts channel on join; /alerts remove-default deletes it and
stops it coming back.
/giveaway and /level need no setup:
-
/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
/alerts test # actually send one