A community is a War of Rights unit with a public face, a working roster, a living schedule, and a Discord assistant that keeps all of it in step. This manual walks the whole flow, from what a visitor sees to how staff run it.
Eight chaptersFive minute readNine bot commands
Getting started
Two ways in, and which one you want decides most of what follows.
Raise your own colors
One run through a stepper: connect Discord, name it, attach its server, say who you are. All you need first is a verified email and no current unit.
Every unit's profile carries its schedule, its roster, and how it recruits. Apply from the profile, or redeem an invitation somebody has already given you.
Both paths run on a connected Discord account. Founding asks for one as its first step, so there is nothing to do in advance; if you are joining, connect yours under Settings → Linked accounts before you apply. It is how a roster entry somebody already made for you attaches to your account, turnout history and all.
The public profile
Every community has a profile anyone can read: its colors, its own account of itself, the staff, the next muster in the reader's own timezone, and who turns out most. The calendar and roster sit right on it, because when a unit meets is how it recruits. From the masthead a visitor can apply to join or follow, which is not membership: it only brings the unit's events into their feed.
ExampleA unit's profile as a visitor finds it
Follow
Community
The Pennsylvania Army
Enlisted
93
In Discord
317
Allegiance
USA
Established
February 2020
Apply to join
CalendarDrills and line battles, in your timezone→Roster93 on the books→
About
The PA Army is a non-historically accurate European / North American community. We do private events on the weekend, ranging from line battles to normal skirmishes.
A profile has two tabs. The wall is what somebody wrote; the game statistics tab is what they did in the game, and it answers from two places at once. Steam says what the account holds: level and progress toward the next, hours in the field, achievements, seasonal event tallies. kepi.live says how they fight, from the servers it tracks: rounds, kills against deaths, what they kill with, what kills them, and which army suits them.
The band across the top of the tab draws both, grouped by who said it, because "in the field" and "on server" are both durations and mean different things. Every figure names its source beside it.
The after action panel is the short version. The full report opens from the account menu on any page, and there you can page back through rounds, filter by map, mode or era, read a command record if the player has one, and look up anybody else by name or by Steam ID.
None of it is compulsory. Every widget has a switch under Settings → Profile & widgets, and linking Steam turns the Steam-fed ones on for you rather than leaving them to be found.
A record that looks empty usually is not. kepi.live only sees the servers it tracks, so rounds played elsewhere are not counted and never were. A Steam block that reads as nothing at all normally means the Steam profile is not public: game details have to be public too, not just the profile. Neither is a statement about how much somebody plays, and we cannot correct a figure at its source.
Joining a unit
Membership
Apply from the profile or accept an invitation. Membership ties your account to the unit and lets you answer events on the site. One unit at a time: leave your current one before applying to another.
The roster
Who is actually in the unit, including people who only live in Discord. Staff enlist them straight from the server, and members can enlist themselves with the bot when the unit allows it.
Mercenaries
You serve with one unit, but any unit may carry you on its roster so it can muster you when you field with it. Add a guest the same way you add anyone else. Each unit keeps its own record of the nights you turned out for it.
How a guest arrived decides what the entry is worth. An officer mustering somebody who was never on the books is a vouch, and that entry stands as a full mercenary. Pressing a turnout button on a schedule post is not: it records that night and nothing else, and grants no standing in the unit until an officer musters them or gives them a rank.
Founding a unit
Press Start a community and answer the stepper. It connects your Discord account, then asks for a name, which of your servers this is, your side and a line about the unit, which roles carry your officer ranks, and where the schedule should post. Only that last one is optional, and it can be answered later.
None of it has to be done in one sitting, and none of it is permanent. The stepper works out where you are from the unit itself rather than remembering a position, so you can close the tab and come back to the same place, and the Manage panel carries a way back in while anything is still outstanding.
The one rule worth knowing before you start: you have to run the server you attach, by owning it or holding Administrator or Manage Server in it. Discord is asked at that moment, never taken on trust, and a server belongs to one unit at a time. If the bot is already in your server, pick it anyway; that is how the unit learns which one is yours. Detaching later, from Manage → Discord, frees it up again.
The owner, and anyone whose rank grants something, gets a Manage button on the profile. Every section is gated by rank permissions, not by job titles, so a unit decides for itself which ranks may enlist, promote, take muster, run the schedule, or draw its battle plans. Two officers in the same unit can open different consoles.
Overview
Manage
The unit's dashboard, and the first thing the console shows you: where the unit stands, the numbers worth glancing at, and anything waiting on somebody.
See what needs attention before anything else
Read the quick numbers on strength and turnout
Pick up setup wherever you left it
Roster
People
Everyone actually in the unit, including the people who only live in your Discord and have never opened the site.
Enlist by searching your Discord server
Bulk-enlist everyone holding a role
Assign ranks inline, and refresh avatars from the guild
Ranks
People
The unit's hierarchy. A rank is its Discord role: pick the role and the rank takes its name and color.
Map a rank to the Discord role that carries it
Grant exactly what that rank may do
Choose who shows as staff on the public profile
Applications
People
Players who asked to join from the profile, with whatever message they sent with it.
Read an application and the note attached
Approve, which makes them a member on the spot
Turn one down without it going anywhere public
Invitations
People
The way in for somebody you have already recruited elsewhere, without them applying and waiting.
Issue a code with its own use cap and expiry
See how many times each has been redeemed
Revoke one that got out
Schedule
Activity
This week's drills and who has answered, plus the recurring schedules that fill the calendar eight weeks ahead on their own.
Put a one-time event on the calendar
Set a weekly drill once and leave it
Check turnout once muster is taken
Battle plans
Activity
The unit's shared WoRSketch boards, which have a field manual of their own.
Start a board on a map to plan one engagement
Start a blank one for a briefing built from several
Say who in the unit may open each
Game servers
Activity
The unit's dedicated server, registered once with its FTP login and edited from here rather than through a file browser. The login is encrypted and write-only: it can be replaced, never read back, by anyone.
Edit dedicated.cfg and the admin list in a proper editor
Read the server log filtered instead of raw
Go through crash dumps, with a snapshot kept on every publish
Profile
Presence
How the unit presents itself to everyone else, laid out like the recruiting poster it produces.
Set the cover banner, allegiance, and the line people read first
Write the unit's own account of itself
Keep a gallery of what it has been up to
Discord
Presence
The server the unit is attached to. This is the doorway everything Discord flows through.
Read the server again, or detach it
Point the schedule at a channel
Set how far your Discord roles reach into the roster
Audit log
Records
Who changed what, and when. Kept for the record rather than for catching anybody out.
Trace an enlistment or a promotion back to who made it
See schedule edits and settings changes
Answer "who did this" without asking around
Schedule and muster
A recurring schedule fills the calendar eight weeks ahead on its own, weekly, monthly, or every N days, and rebuilds itself when its time changes. One-time events cover everything outside the rhythm: a scrim, a tournament match.
Every event posts to your Discord as a card like this one. Members answer Going, Maybe, or Can't on the card or on the site, and the same counts show in both places, live.
Afterwards, staff take muster and the plan becomes turnout: who came as promised, who turned up anyway, who did not show. Every muster feeds each member's running totals, which is what the profile's turnout board is counting.
WWoRTool AssistantAPPToday at 9:00 AM
Saturday Company Drill
Saturday, July 25, 2026 8:00 PM
in 2 days
✅ Going (5)
• Crossguide
• kiptap
• MAOney
• Kilroy
• Milk
❔ Maybe (2)
• ninja
• Web
❌ Can't (2)
• kingbobby
• Hobbit
Answer below - your reply updates the count live.
GoingMaybeCan't
Every muster gets a page of its own on the site, so a roll taken in Discord is readable by anyone the unit sends the link to, with no screenshot and no scrolling back through a channel.
Whether a muster belongs to an event is yours to choose, under Manage → Discord. With Sync muster with events on, /muster asks which scheduled event the turnout is for, and the roll lands on that event's turnout page beside who said they were coming, which is what turns an RSVP into a record of who actually showed. Off, a muster stands alone: the command just logs a voice channel or a single member, and the roll gets its own page with no event attached. Units that drill to a schedule want it on; units that muster whenever people happen to be in voice usually do not.
Operations
An operation is one dated battle that several units turn out for together. A unit's own schedule is its calendar; an operation is the larger thing that calendar answers to, and it is the unit of attendance when more than one unit is involved. Registering for one writes a linked entry into your own calendar as well, so a member sees it beside everything else without anyone copying it across.
An operation is hosted by the site, by a community, or under a name of its own where the host is not a unit here. The host sets whether registrations are taken as they come or reviewed first; open is the default, and a unit awaiting review sits on the waitlist rather than in the order of battle. Caps on units and on players are optional.
Published, and featured
These are two separate axes and it is worth knowing which you are asking for. Visibility is yours: private while you build it, unlisted to share by link, or public. Publishing costs nothing and happens the moment you ask. Featuring is what puts an operation on the public index where strangers find it, and that is curated: you request it, and it is granted or declined. A public operation that has not been featured is still perfectly usable; it just is not advertised.
Rounds and plans
An operation is made of rounds. A round names the map, holds the board drawn for it, and owns the assignments, so "which map, who is where" is answered in one place per round rather than in a pinned message.
A unit can submit a plan for a round from its own WoRSketch shelf. What the operation holds is a copy, deliberately: keep drawing on your own board afterwards and the submitted plan does not change, and nothing the operation does to its copy reaches back to yours. Plans are optional. A unit that submits none still holds its place in the order of battle.
Who may do what is decided per unit, not per person. You can act for a unit if you hold Manage operations in it, or if the host named you one of its leads. Simply belonging to a registered unit is a weaker thing and answers a different question: it decides which side of the field you stand on, and so whose plans for a round are yours to read.
The Discord assistant
The bot is the unit's second front door, not a separate product with its own copy of anything. A rank promoted in Discord is the same rank on the site; a Going pressed on a posted card is the same Going on the calendar. Setting a unit up happens on the website. The bot is for running it where your members already are.
Where the two halves meet
One answer, both places
A Going pressed on a Discord post and a Going chosen on the website land in the same book, and every posted card's live turnout updates either way.
Ranks follow roles
Map a rank to a Discord role once. Granting the role raises the rank, and assigning the rank grants the role.
The roster mirrors the guild
Discord-only members belong on the roster too, with their real avatars and their turnout history, whether or not they ever sign in here.
You decide how far roles reach. Under Manage → Discord, Full treats Discord as the record, enlisting, promoting and demoting. Add only enlists and promotes, so losing a role never costs anyone their rank. Off stops roles changing anything on their own. Worth a thought: a rank carrying permissions is what grants management access here, so under Full a role removed in Discord takes that access with it.
Getting it into your server
There is nothing to invite separately. Attaching your server in the founding stepper adds the bot in the same trip, which is why that is the only way in: an invite on its own puts the bot in your Discord without telling the site which server it landed in, and leaves you believing you are set up when no unit holds it.
The one thing that trip cannot do for you: drag the bot's role above your rank roles, once, in Server Settings. Discord drops a new bot at the bottom of the role list and a bot can only hand out roles below its own, so until somebody moves it the rank sync has nothing it is allowed to do. Manage → Discord names exactly which roles are out of reach while that is true.
Commands
Gated by rank permissions, not titles. The owner always passes, and any rank granted the matching permission can run the command, an NCO rank included. Run /help in your server to see exactly what your own rank unlocks.
/scheduleManage events
Posts the coming week as one card per event, each with live Going, Maybe and Can't buttons, and creates new events without leaving Discord.
/musterTake muster
Records who turned out, a whole voice channel at once or one member at a time, and posts the roll with everyone's running totals.
/promoteManage the roster
Assigns a rank, and hands over the Discord role mapped to it in the same move.
/setupOwner
Changes the unit's settings from Discord: allegiance, events channel, self-enlistment, role sync. Attaching a server happens on the website.
/enlistEveryone
Puts you on the roster yourself, when the unit allows it.
/communityEveryone
The unit's card for the channel: strength, headcount, and the chain of command by rank.
/whoamiEveryone
Your account as the bot sees it, with your rank and your turnout. Answers privately.
/helpEveryone
What your own rank can run, never a list of things you cannot. Carries buttons straight to your unit's pages here.
/pingEveryone
Checks the bot is awake, with its round trip to Discord.
Common questions
The things units actually get stuck on, most of them learned the hard way in somebody else's server first.
The bot is in my Discord, but the site says no server is attached.
Those are two different things. Adding the bot puts it in your Discord; attaching tells the site which server is yours. Both happen in one press on the website, in the founding stepper or under Manage, Discord, so if the bot got in some other way the second half never happened. Use that button and pick the server even though the bot is already in it: nothing is added twice, and that press is what records it.
Who can see the FTP password we saved for our game server?
Nobody reads it back, including you. It is encrypted before it is stored and the only thing that ever decrypts it is the connection being made on your behalf; every screen that shows a server shows it without the password, and a rank that may manage servers can replace one but never see the old one. Reaching it needs the Manage game servers permission on somebody's rank in your unit.
Do we have to give the bot an events channel?
No, and setup will let you past it. Without one the calendar, roster, ranks and muster all still work; the bot simply has nowhere to post your schedule, so members answer on the site instead of on a card in Discord. Manage, Discord sets a channel whenever you decide you want one, and the schedule starts posting from then on.
The bot says it needs Manage Roles, but I already gave it that. Why?
Because it is not the permission that is missing, it is the position. Discord only lets anyone hand out roles that sit below their own, and it puts a new bot at the bottom of your role list. Open Server Settings, Roles, and drag the bot's role above your rank roles. It cannot do this itself: Discord will not let a bot lift its own role, whatever permissions you grant it. Your community's Manage, Discord page shows where the bot currently sits and which roles that leaves out of reach.
The bot answered me privately and said it could not post in the channel.
A channel can deny what the server allows. Even with Send Messages granted server-wide, a channel that denies it to a role the bot holds wins. Open that channel's permissions, add the bot's role, and allow Send Messages and Embed Links. Nothing is lost in the meantime: when the bot cannot post a roll it hands it back to you privately rather than dropping it.
Promoting someone took away the role that lets them see our channels.
A promotion swaps rank roles: it adds the new rank's role and removes every other rank's, so nobody carries two. That is wrong for the base member role most units map to their lowest rank to open their channels. Edit that rank and turn on Keep this Discord role after a promotion, and it will be left alone from then on. Anyone already stripped needs the role handing back once in Discord.
I mapped a Discord role to a rank and nobody moved.
Check where that rank sits in your ladder. A new rank is created at the bottom, below every existing one, so a role mapped to it is worth less than the base member rank people already hold. Drag the rank to its proper place in the list and it applies. Moving somebody down is a separate question: under Add only, the default, a sync never demotes anyone, so only Full will take a rank away when the role goes.
I ticked add everyone who already has this role and nobody appeared.
Almost always the role is a bot's own. Discord marks those managed and will not let a person hold one, so there is no one to add and never will be; pick the role your members actually wear. Otherwise the import did run and found nobody new: it skips bots, and it leaves alone anyone already on the roster at that rank or above. The roster's Sync from Discord button reports exactly what it scanned and why it changed nothing.
What is the difference between the roster and the members list?
The roster is who is actually in your unit, including people who are only in your Discord and have never made an account here. The members list counts site accounts alone. The bot musters the roster, which is why it is the wider of the two.
Can somebody be on two units' rosters at once?
Yes. A player serves with one unit, but any unit may carry them on its roster as a mercenary so it can muster them when they field with it. Add them the same way you add anyone else, by Discord account; nothing has to be different about them. They keep their own unit and their own rank there.
If somebody fights for us as a mercenary, whose turnout does it count for?
Both units count it in their own records, because each mustered them for its own event. Their profile shows the unit they actually serve with, so a guest appearance for you does not read as though they left their own unit. Nobody has to choose, and nothing is taken away from anyone.
A mercenary on our roster cannot answer our events. Why?
They can, as long as they are on your roster with a linked account. Being on the roster is what lets somebody see a unit's schedule and answer Going or Can't, whether or not they belong to that unit. If they are Discord-only they can still be mustered by the bot, but they need an account here to answer on the website.
Searching for members in Discord finds nobody.
That search needs the Server Members Intent, which is enabled for the application rather than in your server. If it is off, the bot can still act on people you name directly, but it cannot browse your member list to find them.
We drilled twice in one day. Does the second muster count?
Yes. Each run of the command is counted separately, so a second drill credits everyone again. Running the same command twice by accident does not: a repeat of one command is ignored. Turnout tied to a scheduled event is credited once per event however many times you muster it, since it is still the one event.
The muster page shows my drill on the wrong day.
Days are recorded in UTC, so an evening muster in the Americas is filed under the next day. The turnout itself is correct and the totals are unaffected; only the date on the page reads a day ahead.
Somebody was mustered by mistake. Can I take it back?
Open that day's muster page and remove them from the roll. The turnout it recorded is deleted and their totals drop back to where they were. Only somebody who may award attendance sees the control.
I forgot to muster last night. Can I still record it?
Open the muster page for the day it should have been on and add whoever turned out, several at once. The credit lands on that day rather than today, so your history stays honest. Adding the same people twice does not credit them twice.
Does the link the bot posts stop working?
No. A muster is addressed by the day it was credited to, not by a token that expires, so the link keeps working and you can walk back through earlier days with the arrows. They step to the nearest day that actually holds turnout.
Take the field
Find a unit to serve with, or raise your own colors.