# Kanály chatu

> Jazyky, tým, obchod nebo lokální kanál: komu řádka chatu dojde, s Discord kanálem pro každý. Novinka 0.2.1, výchozí vypnuto.

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

Keystone umí rozdělit chat do **kanálů** libovolného druhu — jeden na jazyk, týmový kanál, obchod, lokální kanál slyšet jen poblíž. Každý hráč **píše** do jednoho kanálu a **poslouchá** sadu kanálů. Řádka dojde jen hráčům, kteří její kanál poslouchají *a* mají právo ho číst. Funguje s čistým klientem: rozhoduje, komu řádka přijde, není to okno.

**Výchozí vypnuto** (`chat.channels.enabled = false`): nic z toho neběží a chat je takový jako vždy. Novinka **0.2.1**.

## Nastavení

V panelu obrazovka **Chat channels** (pod Community) ukazuje seznam jako tabulku s hotovými řádky (*English & Czech*, *Staff*, *Local*, *Trade*) a náhledem řádky v každém kanálu. Totéž je jedno nastavení v `keystone.toml`, `chat.channels.list`, kanál na řádek:

```
en: name=English; tag=&8[&9EN&8]; language=en; discord=main
cs: name=Čeština; tag=&8[&cCZ&8]; language=cs; discord=123456789012345678
staff: name=Staff; tag=&8[&4Staff&8]; read=keystone.chat.staff; prefix=#
local: name=Local; tag=&8[&aL&8]; radius=100; prefix=!
```

| Klíč | Co dělá |
|---|---|
| `name` | Co vidí hráči (bez barev). |
| `tag` | Před každou řádkou v kanálu, s barvami. |
| `read` | Právo kanál slyšet. Prázdné: všichni. |
| `write` | Právo do něj psát. Prázdné: stejné jako `read`. |
| `language` | Dvě písmena. Hráči, kterým Keystone mluví tímto jazykem, sem píšou automaticky. |
| `radius` | Bloky ve stejné dimenzi. 0: celý server. |
| `prefix` | Znaky, které pošlou jednu řádku sem: `!ahoj` jde do kanálu s prefixem `!`. |
| `discord` | Id Discord kanálu, nebo `main` pro `chat-channel` modulu Discord. Bez něj kanál hru neopustí. |
| `listen` | `yes`/`no`: slyšet, dokud ho hráč neztlumí (pro kanály bez jazyka). |

Pak `chat.channels.enabled = true`. Další nastavení: `chat.channels.default` (kam hráč píše, když jeho jazyk nemá kanál), `chat.channels.mode-default` (`all` nebo `own` — co z jazykových kanálů hráč slyší, než odpoví), `chat.channels.ask-on-join` (otázka níže). Seznam, který nejde přečíst, se při uložení odmítne i s důvodem.

## Pro hráče

```
/channel            # kanály, které smíš číst, co posloucháš, tlačítka pro přepnutí
/channel <id>       # odteď píšeš sem   (funguje i /ch)
/channel mute <id>  # přestat poslouchat
/channel listen <id>
/channel mode own|all
```

**Jazyky.** Hned po výběru jazyka při prvním připojení (viz [jazyk hráče](/docs/keystone/languages)) se zobrazí druhá řádka *Chat: jen čeština / všechny jazyky*. *Jen* poslouchá jen kanál svého jazyka, *všechny* všechny jazykové kanály. `/channel mode` se zeptá znovu. Texty jsou jazykové klíče (`keystone.chat.*`), takže je pokryje překlad serveru.

## Discord

Každý kanál může mít vlastní Discord kanál. Řádka jde jen do Discord kanálu svého kanálu; zpráva z něj přijde jen do toho kanálu, jen hráčům, kteří ho smějí číst, s tagem kanálu na začátku. Kanál bez `discord` hru nikdy neopustí — týmový kanál zůstane soukromý, pokud ho schválně nepropojíš se soukromým Discord kanálem. S vypnutými kanály funguje most jako dřív, s jedním `chat-channel`.

## Co zůstává, jak bylo

Oznámení, řádky o příchodu a odchodu, varování před restartem, `/say`, `/me`, týmové zprávy a `/msg` dojdou všem jako dřív. Odmítnutá řádka (např. nepřihlášený účet) se odmítne dřív, než se volí kanál. Antispam hry dál počítá každou řádku a log konzole dostane každou řádku i s tagem.

## Jak se řádka píše

Se zapnutými kanály Keystone píše každou řádku chatu formátem z obrazovky **Chat** (`chat.format.*`) jako zprávu serveru — stejně jako `chat.format.enabled` — i tam, kde chat formátuje jiný mód, protože řádka musí dojít jen do svého kanálu. Formát může tag umístit přes `{channel}` a jméno přes `{channel-name}`; když to neudělá, tag jde na začátek. Co hráč napíše, se nikdy nečte jako barva ani jako jméno ve složených závorkách.

## Soukromí na jednom místě

- Nikdo neslyší kanál bez práva `read` — ani přes `/channel listen`, ani prefixem, ani z Discordu, ani ve vanishi. Operátor slyší všechny kanály, protože operátor má všechna práva.
- Když se háček chatu na dané verzi hry nepřipojí, každá řádka se odmítne se zprávou, místo aby šla všem.
- Ručně upravený seznam, který nejde přečíst, ponechá poslední funkční a log řekne proč.
