# Moderace

> Bany a kicky s důvodem, s koncem a s obrazovkou, kterou hráč doopravdy uvidí — jeden seznam, ne dva.

Source: https://stygion.eu/cs/docs/keystone/moderation
Updated: 2026-10-10

Bany a kicky, které mají důvod, konec a obrazovku, kterou hráč doopravdy přečte.
Všechno v `moderation.toml` a na obrazovce Players v editoru.

## Příkazy

```
/keystone ban <hráč> [na jak dlouho] [důvod]
/keystone unban <hráč>
/keystone kick <hráč> [důvod]
/keystone bans
/keystone history <hráč>
```

Doba je obyčejná délka — `7d`, `12h`, `30m`. Bez ní ban nekončí. Důvod je to, co
hráč uvidí na obrazovce, takže se vyplatí ho psát pro něj, ne pro sebe.

`/keystone bans` vypíše, co ještě stojí. `/keystone history <hráč>` vypíše
všechno, co tenhle server tomu člověku kdy udělal — i to, co už skončilo.

Oprávnění jsou `keystone.ban` a `keystone.kick`, každé zvlášť. Platí i pro
`/kick`, `/ban`, `/pardon` a `/banlist` ze hry, když je převzatý Keystone (viz
níž). Moderátor, který není operátor, **nemůže vyhodit ani zabanovat operátora**
ani nikoho v těžší skupině, než je jeho vlastní.

**Důvod hráč doopravdy uvidí.** Každý kick, ban, uzavření kvůli údržbě, restart i
neúspěšné přihlášení nejdřív dočtou, co klient právě poslal, pak pošlou důvod a
teprve potom zavřou spojení. Jinak by Linux spojení resetoval a hráč by místo
důvodu četl `Connection reset by peer`. Ban z Discordu už nikoho neodpojuje z
vlákna serveru.

## `/ban` a `/kick` ze hry

```
moderation.take-over-vanilla = true
```

**Zapnuté** (výchozí): příkazy, které mají lidem v prstech, zapisují do tohohle
seznamu, končí samy na svoje datum a ukazují obrazovku, kterou jsi napsal.

**Vypnuté**: jsou to zase příkazy hry — což znamená, že ban napsaný jako `/ban`
je pro `/keystone bans` neviditelný, nikdy nevyprší a ukáže „You are banned from
this server." Nechat to vypnuté je rozhodnutí mít dva seznamy banů.

## Obrazovka, kterou hráč uvidí

Tři z nich patří sem a všechny se dají přepsat v `operations.toml` pod `screens`:

| Obrazovka | Kdy |
|---|---|
| `screens.banned` | Ban bez konce |
| `screens.banned-until` | Ban s datem |
| `screens.kicked` | Vyhození |

Do textu se dosazuje `{reason}`, `{by}`, `{until}`, `{left}`, `{player}` a
`{appeal}`. Prázdné řádky jsou povolené a stojí za to je použít — je to jediná
věc, kterou ten člověk v tu chvíli čte.

**`screens.appeal` je adresa, kam se má odvolat**, a dosadí se do každé
obrazovky, která `{appeal}` obsahuje. Ban, ze kterého se nedá nikam napsat, je
ban, o kterém se nikdy nedozvíš, že byl špatně.

## Discord

Když je zapnutý most, ban může platit na obou stranách:

- `discord.ban.game-to-discord` — ban ve hře zabanuje i na Discordu,
- `discord.ban.discord-to-game` — a obráceně,
- `discord.ban.who-may` — čí bany na Discordu smí dosáhnout do hry.

Obojí je ve výchozím stavu vypnuté, protože je to rozhodnutí, ne pohodlí.
Podrobně na stránce [Discord](/docs/keystone/discord).

## Co tu ještě není

**Varování v modu zatím nejsou** a ztlumený hráč dál může psát na cedulky a do knih.

## Umlčení

Od Keystone 0.2.4.

```
/mute <hráč> <doba> [důvod]      30m, 12h, 7d nebo forever
/unmute <hráč>
/mutes
```

Taky jako `/keystone mute`, `/keystone unmute` a `/keystone mutes` (když `/mute` drží jiný mod). Právo `keystone.mute`, ověřuje se znovu při každém spuštění.

- **Do stejného seznamu jako bany:** `/keystone history` ukáže každé umlčení s důvodem, autorem a koncem; `GET /v1/mutes` (`players.read`) vypíše ta platná. Skončí samo na své datum — nic si nemusí pamatovat, že ho má zrušit — a přežije restart i odpojení.
- **Co zavře:** chat hráče, příkazy z `mute.blocked-commands` (výchozí `/msg`, `/tell`, `/w`, `/whisper`, `/me`, `/r`, `/reply`, `/teammsg`, `/tm` — poštu nebo party chat jiného modu přidáš jménem) a to, co jeho **propojený Discord účet** píše do mostovaného kanálu. Při každém pokusu se dozví důvod a kolik zbývá. Discord most ztlumenou zprávu vůbec neuslyší.
- **Nikdy na výš postaveného:** nikdo neztlumí hráče v těžší skupině ani operátora (pokud sám není operátor), ani nikoho s `keystone.mute.exempt`. Umlčení od někoho výš **zruší jen on**: `/unmute` tě odmítne a řekne kdo. Vlastní umlčení nikdo nezruší. Konzole může všechno.
- Druhé `/mute` nahradí první, nesčítá se.
- `mute.enabled = false` celé vypne (po restartu).
