People and roles¶
Nerthus.Core (until cutover). This page describes the frozen system that runs today and is deleted at cutover. Replaced by: not yet written.
Everybody in the campaign has a block in one file: nerthus.contributors.md, at the root of the repository. Players, Narrators, the Rada - one block each, all in the same ## Osoby section. This page shows you that block, what each line does, and how to register somebody new.
The person's block¶
A player's block, with everything it can carry:
## Osoby
### Eraster
- @margonemid: 9826541
- @status: Aktywny
- @rola: gracz
- @discord: gracz-eraster, gracze, gracz
- @tematy_zastrzeżone: Banany
@margonemidis the person's Margonem profile id, and their real identity.@statusisAktywnywhile they are with the campaign,Nieaktywnywhen they have stepped away.@rola: graczis what makes this person a player. Without it the tool does not know them as one.@discordnames a Discord channel the tool reaches them on. It has its own section below.@tematy_zastrzeżonelists subjects they do not want in their sessions. It has its own section below.
A person's block carries no @plik. Sessions are copied into character files, never into a person's, so a person has no file of their own to point at.
@margonemid is the anchor of the whole block. Nicks change over the years; the Margonem profile id stays put for as long as the person keeps that account. Every sign-in and every permission points at that number rather than at the heading above it - see Start here. When somebody does move to a new Margonem account, you say so with dates rather than by overwriting the number - see below.
A nick change moves only the heading
When a player changes their Margonem nick, change the block heading to match and leave @margonemid exactly as it is. The heading is a label. The id is the identity.
One person, one block, several hats¶
This is the part an operator coming from the old shape gets wrong most often. A person who plays and narrates has one block with two @rola lines - not two blocks:
### Stefan
- @margonemid: 100001
- @status: Aktywny
- @rola: gracz
- @rola: narratorzy
- @discord: gracz-stefan, gracze, gracz
- @discord: narrator-stefan, narratorzy, narratorzy
Stefan is one human. He plays, so he has @rola: gracz. He narrates, so he has @rola: narratorzy. He is reached on a different channel in each capacity, so he has two @discord lines - and the third word on each says which capacity it is for, using the same words as @rola.
If somebody is already in the file - as a Narrator, as a Radna - and they start playing, add @rola: gracz to the block they already have. Do not open a second one.
@tematy_zastrzeżone - subjects to keep out¶
@tematy_zastrzeżone is the person's trigger list: subjects they do not want appearing in sessions they take part in. Here the player Eraster has one, Banany.
A Narrator reads the list before running a session for that player, and plans around what is on it. The list sits on the person's block, so it covers every character that player owns - you do not repeat it per character.
It is one line. If somebody names several subjects, write them all on that single line, separated by commas. The tool keeps the value exactly as you write it and shows it to the Narrator, so write it for a person to read.
@discord - where the tool reaches them¶
@discord names a Discord channel the tool reaches this person on. You give it up to three things on one line, separated by commas - the channel name, the category it sits in, and what the channel is for. Here that is the channel gracz-eraster in the category gracze, and it is the channel they are reached on as a player.
That third word uses the same vocabulary as @rola: write gracz on the channel a player is reached on, narratorzy on the one a Narrator is reached on. That is how one person can have two channels and the tool always picks the right one.
A line with no third word - just kanał, kategoria - is the fallback: the tool uses it whenever nothing more specific fits. It is not read as the player channel; it is read as "this person's channel, whatever the reason".
The tool's Discord bot looks the channel up by name and posts there; it only ever writes, and never reads the channel. Two kinds of message go to a player's channel, and both are for the person, so one channel covers every character they own:
- the PU their characters are awarded, when somebody runs the award by hand rather than on the monthly schedule - see Grant PU,
- the session
Intelaimed at them or at one of their characters - see Record a session.
The narratorzy channel carries different traffic, all of it work in progress: a nudge for each session this Narrator has left open, listing what closing it would do. The Rada's own channel gets a copy of every one of those. That is why the two channels are worth keeping apart - a player reads what the world told their characters, a Narrator reads what is still owed. A Narrator with no narratorzy line is reached on their unpurposed channel, the same fallback every other message uses. See Record a session.
Read the channel name and its category straight off the channel in Discord and write them on one line, channel first.
A new block has no @discord until somebody writes one, and this is your job. Until then the tool quietly reaches that person with nobody - no error, just silence. It is not an oversight in the tool: when a repository is first set up nobody's channel is filled in, because the tool cannot know the names. Filling them in is ordinary work you do over time, and the tool tells you which people still need one wherever you already read its warnings.
Somebody who wants no notifications at all gets BRAK in its place:
BRAK and missing are different on purpose. BRAK means you decided: no channel, and the tool stops asking. Missing means nobody has got to it yet, and the tool keeps it on the list. Do not write BRAK to quiet the list.
Nothing else depends on it. A player with no channel - or BRAK - still earns PU and still takes full part in sessions; the tool just has nowhere to send their copy, records the skip, and carries on. Delivery is best-effort: a channel the bot cannot reach loses that one message, never the award or the intel behind it.
Changing a channel is an edit and a commit¶
Open nerthus.contributors.md, change the @discord line on the person's block, and commit. That is the whole procedure. If you try the old way and ask the tool to set it for you, the tool will refuse and tell you to edit the file.
Link their Discord account¶
A Discord account and a Margonem account are two different things, and the tool refuses to guess which human sits behind a Discord id. Until a Radny says so, every command that person types in Discord answers the same way:
The link is not a line in nerthus.contributors.md, and there is nothing to commit. A Radny hands the tool the two ids once, from the same kind of PowerShell session an API key is minted from - see API keys:
Both arguments are numbers, and neither is a nick.
- Their Discord id. In Discord, right-click their name and pick Copy User ID. They may have to switch Developer Mode on in their own Discord settings before that entry appears.
- Their Margonem profile id. The number already on their
@margonemidline - here9826541, Eraster's.
The person needs a committed block carrying that @margonemid and @rola: gracz before you link. Link ahead of it and the tool refuses, because there is no player for the id to point at. Register them first, then link.
One Discord account per person, and one person per Discord account. Linking a second Discord account to the same person replaces the first, so there is no unlink to remember - somebody who changes Discord account gets one more Connect-NerthusIdentity and the old account goes quiet.
Register a new player¶
- Get their Margonem profile id. Open their Margonem profile and read the number out of the address,
https://www.margonem.pl/profile/view,9826541- the id here is9826541. Ask them for the profile link if you do not have it. - Check whether they are already in the file. Open
nerthus.contributors.mdand look through## Osobyfor their@margonemid. If they are already there as a Narrator or a Radna, add@rola: graczto that block and skip to step 4 - do not open a second one. -
Add the block to
## Osoby, in the same shape as every block around it - a###heading with their current nick, then one@tagline per fact:@margonemid,@statusand@rola: graczare the minimum. Add@tematy_zastrzeżoneif they have named any subjects to keep out. -
Commit. That is what makes it real - every host reads the committed file.
- Add their
@discordchannel. A new block has none, and until it has one the tool reaches that person with nobody. See the@discordsection above. - Link their Discord account. Without it every Discord command they type is refused - see the section above.
- Give them a character. A player with no
Postaćhas nothing to play - see Player characters.
No id, no sign-in
A person without @margonemid is a roster entry and nothing more. That player cannot sign in, because there is no id to match them to. Add the tag when you create the block rather than later.
No @rola: gracz, no player
A block with no @rola: gracz is somebody who is in the file and is not in the game. Their characters will have nobody to belong to, and nothing they own will be theirs.
When somebody stops holding a role¶
Somebody who stops narrating but keeps playing is not retired. Close the range on that one role and leave the rest of the block alone:
They keep playing, keep their characters, and keep their PU. Only the narrating stopped, and the block records when.
When somebody changes Margonem account¶
Their profile id changes with the account, and that id is what the tool uses to know who they are. You are not replacing the number. You are saying until when it was theirs, and adding the new one from the day it took over:
### Stefan
- @margonemid: 100002 (:2026-07-01)
- @margonemid: 400002 (2026-07-01:)
- @rola: gracz
- @discord: gracz-stefan, gracze
Read it as a sentence: 100002 was Stefan up to July 2026, 400002 is Stefan from July 2026 on. Use the same date on both lines, written the way every other date in the file is written. Ask them for their new profile link rather than the number - the link is easy to copy and hard to mistype.
Everything else follows on its own, and you do not have to touch any of it: their roles and personal capabilities, their Discord link, their API keys, their characters, their coin, and their PU. Every past record that named the old id still names it and still resolves to this person. If they were signed in when you made the edit, their sign-in stops working within about four hours and they simply sign in again.
Pick the date honestly
Whatever date you write is the date the old account stops being able to sign in as this person. If they keep using the old account for another week, say so with the date. If the account was lost or stolen, close it as of the day that happened - and make this edit first, before anything else.
To hand over with no gap at all - for somebody mid-session, say - write a date a day or two ahead on both lines. The switch then happens on its own, on the day you named.
When somebody leaves for good¶
The same edit without the second line: close the range on their @margonemid and add nothing.
From that date they no longer appear on the roster, no longer sign in, and hold no permissions - while every past record of theirs still reads correctly. The store notes them as retired when it is read.
Their characters are separate blocks in a separate file, and this edit does not touch them. Retire each character you want retired, or leave them standing as the record of somebody who played - Add and edit entities has the gesture.
Gracze.md¶
Gracze.md was the original hand-written player database, and the roster was built from it once, when the repository was first set up. It is a frozen archive now. Never edit it - ## Osoby here and ## Postacie Graczy in the index are the roster of record. Everything the old file carried now lives in those two places, and the file itself was retired from the repository once it had been read.
Related¶
- Player characters - the
Postaćblocks these people own - Start here - signing in with a Margonem id, and what each role may do
- API keys - the same file, and the keys pasted into it
- Grant PU - what the characters these people own earn