Police roster
The police roster publishes your department's line-up as a page on your own FiveUnity address, and keeps it in step with Discord. Give somebody the Sergeant role and they move up the roster; take it off and they come off it. Call signs are handed out on their own, and written into the member's nickname.
Where: Dashboard โ Roleplay โ Police roster
#Set up with AI
Set up with AI at the top of the Roleplay page builds and edits the police roster from a plain-English description: ranks and units, call-sign format and number blocks, nickname tags, who can open the public page, and the log channel. Examples: "Set up a police roster with Chief, Captain, Lieutenant, Sergeant, Officer and Cadet. Call signs like P-01, tag in front of the nickname.", "Sergeants should be S-200 to S-299.", "Add a SWAT unit and a K9 unit.", or "Nobody is showing on the roster even though people have the Officer role." It needs the Pro plan and a working AI Assistant key; the manual controls below work on every plan.
The assistant never acts on its own. Every request goes through the same steps as Tickets โ Set up with AI:
- Plan. Gemini turns your description into a plan. It refers to roles and channels by name only; it is never shown a Discord id and cannot invent one. When you name an existing rank or unit, the plan updates that row in place. Settings-only plans are allowed when you are not changing ranks.
- Check. FiveUnity matches every name to your server. A name that fits exactly one thing is used. A name that could mean several things or nothing at all becomes a question with a picker. A plan that deletes ranks you never asked to delete is refused.
- Review. You see every rank and unit it would add, change or remove, plus the settings patch. Ask for changes in the chat or answer its questions, then press Apply configuration.
- Apply. Nothing is saved until you confirm. Creates (new roles or a log channel) roll back if a later step fails. A first-time setup also rebuilds the live roster from Discord so people appear straight away.
Run audit checks the setup itself (missing or deleted rank roles, overlapping number blocks, a public address that clashes with the staff roster, nickname tags the bot cannot apply) and plans the fixes. Member call signs and nicknames are not sent to the model.
Role and channel names are sent to Google Gemini with your request. The manual controls below stay the source of truth for one-off member edits (pin a call sign, move someone, rebuild).
#How it works
Discord is the source of truth. You link one Discord role to each rank, and holding a rank role is what puts somebody on the roster. Their rank is the most senior of the rank roles they hold, so a promotion in Discord is a promotion on the roster, and losing every rank role takes them off it.
On top of that, FiveUnity does three things automatically:
- Hands out a call sign (
P-01,P-02, and so on) the first time somebody appears on the roster. - Writes that call sign into their Discord nickname, in front of the name or behind it, whichever you choose.
- Publishes the whole thing at
fiveunity.com/<server id>/<roster address>/roster, grouped by rank and searchable.
The roster updates the moment a role changes. It is rebuilt in full when the bot restarts, and re-checked every 30 minutes in case anything was missed.
#Publish the roster
Switch Police roster on. FiveUnity works out an address from your server's name (a server called 5Star Roleplay is published at .../5starroleplaypolice/roster) and you can change it to anything else.
| Setting | What it does |
|---|---|
| Roster address | The last part of the public link. Letters and numbers only. |
| Heading | The title at the top of the page. Empty uses your server's name plus "Police". |
| Who can open it | Anyone with the link, members of this server (they sign in with Discord first), or staff only. |
| Roster managers | Roles that may edit the roster from the dashboard, on top of Administrator and Manage Server. |
| Log channel | Where promotions, demotions, new recruits and call sign changes are posted. |
| Description | One line under the heading. |
A roster set to members or staff is also kept out of search engines.
#Ranks
Add one row per Discord role that means a rank, most senior at the top. The order on this page is the order on the published roster.
| Field | What it does |
|---|---|
| Discord role | Holding it means this rank. |
| Name | What the roster calls it, e.g. Sergeant. |
| Short form | Used by the {rank} call sign token, e.g. SGT or Asst. Chief. Up to 16 characters. |
| Call sign prefix | The letter or two this rank's call signs start with, e.g. S. |
| Lowest number / Highest number | The block of call sign numbers this rank owns, e.g. 200 to 299 for sergeants. Leave both empty to use the roster's own range. |
| Numbers to hold back | Numbers inside the block that are never handed out automatically: a retired badge, or one you are keeping for somebody. A call sign set by hand may still use one. |
| Maximum members | How many people this rank is meant to hold. The roster shows 4 / 6 against the heading and flags it when it is over; nobody's Discord role is ever removed for it. |
| Colour | A hex code for this rank's stripe on the published roster. |
| Show publicly | Off keeps a rank off the public page while it still syncs and still gets call signs: a reserve list, or a grade you do not publish. |
A rank role can sit above FiveUnity's own role. Reading it is enough. FiveUnity only needs to be above a role when you use Move to rank on the dashboard to change somebody's roles for them.
#Units
Units are optional sub-divisions: Patrol, SWAT, K9, Traffic. They work exactly like ranks (a Discord role each) and give every member a second column on the roster, plus a filter on the published page. A unit can carry its own call sign prefix.
#Call signs
Call signs are handed out from the lowest free number in a member's prefix group, so P-01, P-02, P-03. Each prefix keeps its own sequence by default, so P-01 and S-01 can both exist. When somebody leaves the roster their number goes back into the pool and the next recruit takes it.
| Setting | What it does |
|---|---|
| Assign automatically | Off leaves every call sign to manual overrides. |
| Format | Tokens {prefix} {number} {rank} {unit}. {number} is required. A token that resolves to nothing takes its separator with it, so an empty prefix gives 07, not -07. |
| Prefix comes from | The rank's prefix, the unit's prefix, or always the same one. Whichever you pick, the other is the fallback. |
| Fallback prefix | Used when neither the rank nor the unit sets one. |
| First number | Numbering starts here, then fills the first gap. Used by any rank that does not set a block of its own. |
| Last number | The ceiling for those same ranks. Empty means no ceiling. |
| Digits | 2 gives 01, 3 gives 001. |
| Numbering | Restart per prefix, or one sequence for the whole roster. |
| Numbers to hold back | Never handed out anywhere on the roster, on top of what each rank holds back. |
| Renumber on promotion | Whether a promotion into a new prefix reissues the number. Off keeps the number they had. |
| Keep ranks inside their block | On, a promotion moves the number as well as the prefix, so a new sergeant does not keep a cadet number. Off lets somebody keep a number their new rank does not own, which is right when the number is the person. |
#Number blocks
Most departments read a call sign as "which rank, then which person": sergeants are the 200s, officers the 100s, cadets the 900s. Set Lowest number and Highest number on each rank and FiveUnity numbers people inside their own block and never outside it.
- A promotion moves the number into the new rank's block, unless you switch Keep ranks inside their block off.
- When a block is full, the member goes on the roster without a call sign and the block is reported as full. Nobody is quietly given the next rank's number. Widen the block, or free one up.
- If you type the two numbers the wrong way round, they are read as the block you meant rather than handing out nothing.
- A call sign you pin by hand ignores blocks entirely.
#The public page
| Setting | What it does |
|---|---|
| Header image | A wide https:// image across the top of the roster. |
| Order inside a rank | Call sign number, name A-Z, or longest in the rank first. Ranks themselves always read senior first. |
| Columns | Turn the call sign, unit, status, in rank since and joined columns on or off. |
#Nickname tags
When somebody's call sign is set or changed, FiveUnity writes it into their Discord nickname.
| Setting | What it does |
|---|---|
| Where the tag goes | In front of the nickname ([P-07] Dave), behind it (Dave [P-07]), or do not touch nicknames. |
| Tag | The tag itself. [{callsign}] by default; {callsign} is required and everything else is written literally. |
| Restore the name on removal | Puts the plain name back when somebody leaves the roster. |
FiveUnity remembers the name underneath the tag, so a promotion swaps the tag rather than stacking a second one. If a member renames themselves, what they typed becomes the new name and the tag goes back on it at the next sync.
FiveUnity needs Manage Nicknames, and its own role must sit above the member's highest role. Discord never lets any bot rename the server owner. Anyone who cannot be renamed still gets their call sign and still appears on the roster; only the nickname is left alone.
#The roster table
The Roster panel is the live list. Every row can be edited.
- Call sign: type one to pin it. A pinned call sign is never touched by automatic numbering, so a Chief who has been
1-ADAM-1for a year keeps it through every promotion. Clear the field to hand them back to auto-assign. - Move to rank / Move to unit: a real promotion or demotion. It changes their Discord role, and the roster follows. This is the one place FiveUnity has to be above the role.
- Pin to a rank instead: places somebody without touching any Discord role, for a rank that has no role of its own. A pinned member stays put no matter what happens to their roles, until you clear the pin.
- Status: free text, shown as its own column on the published page. Useful for On leave, Probation, FTO.
- Remove: takes their rank and unit roles off in Discord, frees the call sign, and takes the tag off their nickname.
- Rebuild from Discord: reads the whole member list and rebuilds the roster from the roles people hold right now. You need this the first time you set the ranks up, and never again in normal use.
#See also
- Staff roster: the out-of-character staff team, published at its own address.
- AI Assistant: the Pro key Set up with AI uses.