DOCUMENTATION

Docs

Everything you need to invite JSD, configure detention, run appeals, and use the web dashboard.

TABLE OF CONTENTS

Overview

Jailer System Detention (JSD) is a Discord moderation bot for temporary member detention. Moderators jail a member for a set time (or forever). Roles are snapshotted and stripped. When time is up, or staff releases them, roles restore and the case stays in the audit log.

Jailed members can open a private appeal. A background sweeper auto-releases expired cases even if the bot restarted mid-sentence.

How it works

  1. 01

    Detain

    A jail moderator runs /jail with duration, reason, and category. JSD DMs the member and posts to the mod log.

  2. 02

    Contain

    The member only sees #jsd-jail-chat (and their appeal channel if opened). Other channels deny the jail role.

  3. 03

    Appeal (optional)

    They run /appeal. Staff get Release, Close (Deny), and Ban controls in a private channel.

  4. 04

    Release

    The timer expires (sweeper) or a moderator runs /release. Roles restore. The case closes as expired, released, or overturned.

Invite the bot

Use the invite button on this site (requires your Discord application client ID), or generate an invite in the Discord Developer Portal.

Invite with Administrator so the bot can apply roles and channel restrictions without extra permission wizardry.

  • Administrator (grants everything, including Manage Roles, Manage Channels, Ban Members)

After inviting, drag the bot role above the jail role and above any roles it must strip. Discord will not allow the bot to manage roles at or above its highest role.

Invite bot

Server setup

The bot does nothing useful until an administrator runs /setup. The wizard walks through:

  1. Jail role - pick one or create Jailed
  2. Jail mod role - who can jail, release, view cases, and act on appeals (admins always can)
  3. Channel structure - build JSD categories or point at your own channels
  4. Timezone - IANA name for timestamps

Use Quick setup on the first screen to build everything in one press. The summary screen edits the jail DM template with tokens {user}, {guild}, {reason}, {duration}, and {case_id}.

Channel structure

JSD Info      #jsd-info        public, read-only - how detention works
              #jsd-mod-log     mods only - audit log
JSD Appeal    (private appeal channels, one per case)
JSD Jail      #jsd-jail-chat   jailed members + mods only

The jail role is denied view and send everywhere else, so detained members only reach jail chat and their appeal channel. Re-running structure only creates what is missing.

Commands

CommandWhoWhat it does
/setupAdminsWizard for roles, channels, timezone, and DM template
/jailJail modsDetain a member with duration, reason, and category
/releaseJail modsRelease by case ID or user
/caseJail modsShow the full case record
/jsd-caseJail modsLook up a case by ID or member
/jsd-configJail modsRead-only summary of the current setup and escalation
/jsd-notesJail modsAppend a note to any case
/jsd-historyJail modsFull jail + infraction history for a member
/warnJail modsFormal warning that feeds the auto-jail threshold
/muteJail modsTimeout a member (also feeds the threshold)
/reportAnyoneFile a report so staff can review it
/jsd-categoriesAdminsAdd, remove, and list custom offence categories
/my-jsd-caseAnyoneCheck your own active case and appeal status
/appealJailed memberOpen a private appeal channel
/jsd-helpAnyoneIn-Discord help browser
/jsd-supportAnyoneGet an invite to the official support server
/rework-jsdAdminsWipe JSD structure and config (keeps case history)

Durations

/jail takes an amount plus a unit: seconds, minutes, hours, days, weeks, months, years, or Forever for an indefinite jail with no automatic release (the amount is ignored for Forever).

The sweeper checks expired cases on an interval (default 30 seconds) and once at startup. Releases use a conditional database update so the sweeper and /release never double-release the same case.

Escalation

JSD offers a staff-facing ladder below full detention. /warn and /mute add points to a member's record within a rolling window (default 30 days). When the score reaches the configured auto-jail threshold, the member is jailed automatically for 24 hours with category Other.

Members can file /reports directly. Each one lands in the mod log and in /jsd-history for staff review, but member reports never trigger an auto-jail on their own — only staff-issued warns and mutes do.

Admins set the threshold and window on the web dashboard (Server → Settings → Escalation). Staff see the current score next to every warn or mute, and a mod-log embed records when an auto-jail fires.

Categories

Default offence categories on every server: Spam, Harassment, NSFW, and Other.

Custom per-server categories are managed by admins with /jsd-categories add / remove, or from the web dashboard (Server → Categories). Custom names appear in the /jail picker alongside the defaults.

Appeals

While jailed, a member runs /appeal. JSD opens a private channel under the appeal category. Staff can:

  • Release - free the member and restore roles
  • Close (Deny) - keep them jailed and close the appeal
  • Ban - ban them from the server

On Pro, the same queue is available from the web dashboard for that server.

Web dashboard

Log in at /login with Discord (jsd.vexoris.dev).

  • Members - jail status, countdown, history, and appeal state
  • Owners and mods - setup health and config; Pro adds categories, live jails, appeal queue, and analytics

The site and bot share the same Turso database. File uploads (Cloudflare R2) are planned for a later version.

Free and Pro

Free includes the full Discord jail loop and basic member web status. Pro unlocks custom categories, web moderation, and analytics — billing is still work in progress. Extra servers need their own Pro seat.

Full pricing

Permissions and role tips

  • The bot role must sit above the jail role and any roles it strips
  • Managed roles (Nitro boost, integrations) may not be strippable. JSD warns and does not fail the jail
  • Roles deleted while a member is jailed are skipped on release
  • Failed DMs never abort a jail or release. They are noted in the mod log

Starting over

/rework-jsd (admins) deletes JSD-created categories, channels, and roles, and clears guild config so /setup can run fresh. Channels and roles you created yourself are only unlinked. Case history is kept.

Troubleshooting

Commands do not appear
Global commands can take up to an hour. For testing, set a dev guild ID so commands register instantly. Restart the bot after config changes.
Cannot strip or restore roles
Raise the bot role above the jail role and target roles. Check that Manage Roles is granted.
Member still sees channels while jailed
Re-run channel structure in /setup. Confirm jail role overwrites on non-JSD channels.
Auto-release did not fire
Check that the bot is online. The sweeper runs on an interval and at startup. Forever jails never auto-release.
Bot left the server
The guild may be on the operator blacklist (JSD Control). Contact support if that was unexpected.

In Discord, run /jsd-help for the interactive help browser.

Support

Stuck, found a bug, or have a feature request? Run /jsd-support in Discord for an invite, or join directly below.

Join the JSD Discord