← How to play

The Discord bot

One slash command — /sheetwright — puts your living character sheet in your table's Discord server. Everything acts through the same rules as the web app: rolls land in the campaign dice log, pool spends show up live on an open sheet, attack damage updates the GM's encounter.

Getting connected

  1. Run /sheetwright link in any server with the bot. It replies (only to you) with a magic link, valid 15 minutes.
  2. Open the link while signed in to Sheetwright — your Discord account is now connected, once, for every server.
  3. Pick who you play with /sheetwright character name:<who> — the bot autocompletes your active characters.

/sheetwright link action:disconnect disconnects at any time. Everything below requires a linked account and a picked character.

Player commands

Action results post as table-safe summaries the whole channel sees; sheet, status and list replies stay private to you.

Command What it does Example
link [action] Connect your Sheetwright account — action:disconnect severs it again /sheetwright link
notifications [state] Opt in to (or out of) DMs: you're up, new handout, unclaimed loot, an intrusion awaits — off until you turn them on /sheetwright notifications state:on
character [name] Pick which of your characters you play here (autocompletes) /sheetwright character name:Vess
sheet Your character sheet — with buttons for any prompt waiting on you /sheetwright sheet
roll dice [note] [target] [approach] [difficulty] Server-side dice (d20, 2d6+1…) into the campaign dice log. In a social scene, naming a target or approach (or a bare difficulty) makes it a real social task through the engine; a bare roll auto-attaches to the one active scene you're in, with a one-tap "Not part of it" undo /sheetwright roll dice:d20 target:The Conductor approach:charm
task difficulty [skill] [assets] [effort] [stat] [note] A Cypher System task roll against difficulty 0–10; Effort is paid from the chosen pool, Edge applies automatically /sheetwright task difficulty:4 skill:trained effort:1 stat:intellect note:Decipher the glyphs
attack target damage [ability] [skill] [assets] [effort] [stat] [difficulty] Attack an enemy in the active encounter — difficulty defaults to the target's level, damage lands in the GM's encounter. Name an ability (Onslaught and friends) and its cost is paid with the same roll, Edge applied once, from the ability's pool unless you pick a stat /sheetwright attack target:Guard damage:4 ability:Onslaught effort:1
initiative [skill] [assets] [effort] Roll initiative (a Speed task) when an encounter starts /sheetwright initiative effort:1
defend [prompt] [skill] [assets] [effort] Answer a pending defense prompt (defaults to your oldest open one); a failed defense applies damage automatically /sheetwright defend effort:2
help target Help another PC — they gain one asset /sheetwright help target:Marla
move zone Move to an adjacent zone in the encounter /sheetwright move zone:The scree
pool stat amount Spend (negative) or restore (positive) pool points /sheetwright pool stat:might amount:-2
resource name amount reason Adjust a trackable custom resource (Soul Points and friends) — negative spends, positive restores, and the reason lands in the resource's audit history /sheetwright resource name:Soul Points amount:-1 reason:Powered the ward
recover Make your next recovery roll (1d6 + tier), using slots in order /sheetwright recover
xp amount Adjust your XP (positive gains, negative spends) /sheetwright xp amount:2
cypher [name] List your cyphers, or mark one used /sheetwright cypher name:Detonation
abilities List your abilities with their Pool and tracked resource costs and the remaining tracked uses /sheetwright abilities
use ability [effort] [stat] Use an ability, paying every Pool and tracked resource cost at once and counting a tracked use (going beyond a use limit warns, never blocks) — pick stat for the Effort Pool when the cost alone doesn't decide it (custom-only or multi-Pool costs) /sheetwright use ability:Bash effort:1
lookup query Look up a creature in the bestiary /sheetwright lookup query:broken hound
encounter status What's happening right now, spoiler-free — in combat, the live turn order with whoever is up marked /sheetwright encounter status
intrusion accept · decline · status Answer the GM intrusion waiting on you (+2 XP / −1 XP), or list the open ones you can see /sheetwright intrusion accept
clock status Where the party's clocks stand /sheetwright clock status
rewards list · claim reward Browse the party's loot queue and claim a reward for your character /sheetwright rewards claim reward:Ray emitter
arc view · start · log Privately view your arc journal, start an arc, or log a milestone and its XP /sheetwright arc view

Prompts come with buttons: defenses offer [Roll defense] and [With Effort…], a natural 19/20 offers [Take +damage] — choosing a special effect instead happens on the web via the link in the reply.

GM commands

Everything a GM does lives under /sheetwright gm, so players never scroll past commands that aren't theirs. First pick which of your campaigns you run here with gm campaign — the GM's mirror of a player picking a character; no linked character is needed to GM. The bot checks that you are the picked campaign's GM (GM features need a subscription, like on the web), and GM replies are always private to you, so the table sees nothing it shouldn't.

Command What it does Example
gm campaign [name] Pick which of your campaigns you run here (autocompletes) /sheetwright gm campaign name:The Sunken Vault
gm encounter [name] The full encounter picture, privately — turn order with every initiative roll, who is up, NPC health, concealed threats. Needs no character in the campaign; name an encounter when several are active /sheetwright gm encounter
gm start · next · end Start the prepared encounter, advance the turn, end the scene /sheetwright gm next
gm convert Flip the active encounter in place: a social scene turns violent, or a combat becomes a parley — same cast, same log /sheetwright gm convert
gm damage target amount [piercing] Apply direct damage to one participant (Armor applies) /sheetwright gm damage target:Vess amount:3
gm effect target name kind [value] [duration] [applies_to] Apply an asset / eased / hindered effect for an action, a round, the encounter, or until removed /sheetwright gm effect target:Guard name:Dazed kind:hindered duration:round
gm request pc target [approach] [note] Ask a named player for a social roll vs. an NPC ("Persuasion vs. the Conductor") — they get the prompt on their sheet, web view and DM, and their answer lands pre-attached with your target and approach /sheetwright gm request pc:Vess target:The Conductor approach:reason
gm intrusion pc description Propose a GM intrusion against a PC — they answer with accept/decline (from Discord or the web) /sheetwright gm intrusion pc:Vess description:The bridge rope snaps
gm tick clock [amount] Advance or rewind a clock (negative rewinds) /sheetwright gm tick clock:Reinforcements amount:1
gm assign reward character Hand a staged reward straight to a character /sheetwright gm assign reward:Ray emitter character:Vess

gm encounter shows you the full picture (privately): the live turn order with each initiative roll, who is up, NPC health and concealed threats — no character in the campaign needed. Playing a character at the table, the player-side clock status and encounter status show you the same; players get the spoiler-free view. Initiative rolls reorder the turn list on their own. Some steps deliberately stay on the web runner: reordering the turn list by hand, announcing NPC attacks, multi-target actions, the effect side of a special choice, and resolving the encounter with rewards.

GMs: bring the bot to your server

  1. Add Sheetwright to your Discord server — you need the Manage Server permission there. The bot registers slash commands and joins with zero permissions: it never posts in channels and reads no messages — being a member only lets it DM the players who opt into notifications.
  2. Have every player /sheetwright link and pick their campaign character. You link too, then pick the campaign you run with /sheetwright gm campaign — GMing needs no character of your own.
  3. That's it. The bot has no per-server setup — campaign membership on Sheetwright decides who can do what, in any channel the command is used.

Slash commands work in every channel the bot's commands are allowed in — use Discord's Server Settings → Integrations to restrict them to a game channel if you like.

A play-by-post week, start to finish

Play-by-post is where the bot and the campaign pages click together: Discord is the table, Sheetwright keeps everyone oriented. Nothing posts for you and nothing enforces a pace — the bot answers commands, DMs the players who asked to be pinged, and keeps the campaign pages current. Here's a worked week at a Ninth World table: the GM is running the vault delve from the GM guide, the players are Mara and Jori.

Once, at setup

  • The GM adds the bot to the server; everyone runs /sheetwright link. Players pick their character, the GM picks the campaign with gm campaign.
  • Everyone who wants pings runs /sheetwright notifications state:on — DMs are strictly opt-in, per player, and never appear in a channel.
  • The GM makes a thread per open scene (#the-flooded-stair) and puts its link and label on the scene card, so the scene — and the party's "Whose move is it?" card — always point at the right thread.

Monday — the GM opens the scene

The GM posts the framing in the thread, marks the scene active on the scenes page and sets its waiting state to players, ticking Mara and Jori. Both get a DM — "you're up" with the scene's title and a link — and the campaign's handouts page now answers play-by-post's eternal question: whose move is it?

Tuesday — Mara acts

Mara replies in character, then rolls right in the thread: /sheetwright task difficulty:4 skill:climbing effort:1 — the result posts as a table-safe summary the whole thread sees and lands in the campaign dice log. It's a natural 1. The GM, on a phone, answers with /sheetwright gm intrusion ("the rusted rail tears loose"); Mara gets the "an intrusion awaits" DM and takes the XP with /sheetwright intrusion accept.

Wednesday — the world moves

The GM ticks the Rising water clock (gm tick) and reveals a handout — the star-chart mosaic, an image on a note addressed to Mara alone. Mara's DM says a new handout waits; nobody else is pinged, and nobody else can open it. Anyone can check /sheetwright clock status or the handouts page between posts.

Thursday — slow-motion combat

The encounter prepared on the scene starts (gm start). Combat works exactly like at a live table, just slower: players roll initiative as they come online, attack with /sheetwright attack, and a pending defense waits patiently on its player — with roll buttons on /sheetwright sheet — until they answer. Nothing times out.

Friday — loot, and the quiet player

The GM stages the warden's cypher: every member gets the "unclaimed loot" DM, and Jori claims it with /sheetwright rewards claim. Jori has otherwise been silent all week — the spotlight strip on the GM's scenes page sorts him first (waited on since Monday, no roll, no reward before this), the GM's cue for a friendly out-of-game nudge. The "you're up" DM fired Monday and won't repeat — pings happen when the waiting state newly points at someone, never on a timer.

Sunday — wrap the beat

The GM marks the scene resolved, activates the next one, nudges the thread's history and wraps the week into a session log. A player back from vacation doesn't reread four hundred posts: the Recap page (Campaign → Handouts → Recap) assembles what the table saw — sessions played, clues found, revealed threads that moved, the encounter's outcome, new handouts and the dice log — over a 7, 14, 30 or 90-day window. It's spoiler-free for everyone, the GM included.

The contract in one line: your posts are yours, the waiting state is guidance rather than enforcement, and every number — rolls, pools, clocks, XP, loot — stays honest in one place while the story happens in the thread.