STYGION Dokumentace Hledat v dokumentaci

Discord

Chat oběma směry, účty ověřené kódem ze hry, role a bany držené v souladu a konzole zrcadlená tam, kde na ni vidíš.

Keystone 0.2.8 Aktualizováno 4 min čtení

Stránka je starší než Keystone 0.2.8, vydaný 18. října 2026. Od té doby se něco mohlo změnit.

Na téhle stránce 8 částí
  1. Jak to rozmluvit
  2. Chat
  3. Propojení účtu
  4. Role a bany v souladu
  5. Konzole tam, kde na ni vidíš
  6. Upozornění
  7. Otázka „jsi to ty?"
  8. Tickety na Discordu

Discord

Všechno tady je discord.toml, nebo obrazovka Settings v panelu.

Jak to rozmluvit

#
  1. Udělej si bota na discord.com/developers a dej mu intenty Message Content a Server Members — bez prvního vidí bot prázdné zprávy a do hry se nevrátí nic.
  2. /keystone set discord.token <token> a /keystone set discord.server <id serveru>.
  3. /keystone set discord.chat-channel <id kanálu> — místnost, se kterou hra mluví.
  4. Pozvi ho s právem číst, psát a spravovat webhooky v tom kanálu.

Token je tajemství a Keystone maskuje příkaz, kterým se nastavuje, z logů i z konzole. Pořád se ale zapíše do discord.toml, takže ten soubor není něco, co se publikuje.

Chat

#
Nastavení Co dělá
game-to-discord Co se řekne ve hře, objeví se na Discordu.
discord-to-game A obráceně.
speak-as-players Každý hráč mluví pod svým jménem a obličejem, přes webhook, místo aby všechno chodilo jako bot.
avatar Odkud se bere obličej. Výchozí je veřejný renderer hlav podle jména.
joins-and-leaves I příchody a odchody.
topic / topic-every Popisek kanálu nese, kdo je na serveru, a obnovuje se na časovač.
queue Kolik zpráv podržet, když je Discord nedostupný, aby výpadek nesnědl konverzaci.

Se zapnutými kanály chatu (0.2.1) může mít každý herní kanál vlastní Discord kanál (discord=<id kanálu>, nebo discord=main pro chat-channel): řádka jde jen do Discord kanálu svého kanálu a zpráva z Discordu jen do svého kanálu, jen hráčům, kteří ho smějí číst. Kanál bez Discordu hru neopustí. Bota pozvi do každého uvedeného kanálu s právem číst, psát a spravovat webhooky.

Propojení účtu

#

Ve hře:

Kód
/discord link      # dá ti kód
/discord status    # jestli jsi propojený a s kým
/discord unlink    # zpátky

Na Discordu pak /link <kód> — jako slash příkaz, takže se ten kód nikdy nestane zprávou, kterou by bylo potřeba mazat, a odpověď vidíš jen ty. Žádná webovka, žádný e-mail.

Nebo tlačítko v místnosti, do které nikdo nesmí psát (0.2.1). /discord panel <id kanálu> (keystone.discord.panel, personál) pošle do discordového kanálu panel s tlačítkem Link account. Tlačítko otevře formulář, který vidí jen ten, kdo na něj klikl; kód, který do něj napíše, se utratí přesně jako u /link — stejné kontroly, stejná odpověď, stejný limit účtů. Ten kanál nastav všem jen ke čtení: Discord bere slash příkazy spolu s právem Send Messages a kód vložený jako obyčejná zpráva může kdokoli přečíst, dokud ho někdo nesmaže. Id tlačítka je pevné (keystone:link), takže funguje i panel, který pod stejným botem pošle jiný nástroj. /link zůstává pro místnosti, kam lidé psát smějí.

  • link.required-to-join z toho udělá bránu: nepropojenému hráči se ukáže zpráva screens.not-linked s jeho kódem, pozvánkou a tím, jak dlouho kód platí, a dovnitř ho to nepustí, dokud to neudělá.
  • link.accounts-per-user je, kolik herních účtů smí mít jeden Discord účet.
  • link.rename-nickname ho na Discordu přejmenuje na jméno, pod kterým hraje.
  • link.code-lasts je, jak dlouho má smysl kód psát.
  • link.invite je pozvánka, kterou ta obrazovka ukáže.

A k čemu je to dobré i mimo hru: propojení je na serveru, který není v online režimu, jediný důkaz totožnosti, který existuje — vzniklo zevnitř hry pod tím jménem a potvrdil ho účet, který hra nerozdává. Proto se na něj dá ptát přes API: GET /v1/discord/links?discord=<id> se scopem players.read řekne, které herní účty ten člověk drží. Tak se e-shop dozví, komu koupenou věc doručit, místo aby věřil jménu napsanému do formuláře.

Role a bany v souladu

#
  • roles.follow spáruje discordovou roli se skupinou v Keystone, oběma směry: dáš někomu roli a dostane skupinu.
  • ban.game-to-discord a ban.discord-to-game přenesou ban. Vypnuté ve výchozím stavu, protože je to rozhodnutí, ne pohodlí — a ban.who-may říká, čí bany na Discordu smí dosáhnout do hry. Viz moderace.

Konzole tam, kde na ni vidíš

#

console.channel zrcadlí log serveru do discordové místnosti, po dávkách každých console.every, aby se vytížený server dal číst a nebyl to proud vody. console.levels vybere, co má cenu zrcadlit, console.ignoring zahodí řádky, kterých máš plné zuby. console.most-lines omezí jednu dávku.

Kdo vidí do té místnosti, čte log tvého serveru. Dej ji někam, kam vidí jen tvůj tým.

Upozornění

#

alerts.channel je místo, kde Keystone řekne, že je něco špatně — TPS pod operations.alerts.tps-below, paměť nad operations.alerts.memory-above-percent, drženo po must-last a pak ticho po quiet-for, aby se z jedné špatné minuty nestalo čtyřicet zpráv. alerts.ping-role je, kdo se má vzbudit. alerts.runs-channel je, kam padají hotové zátěžové testy.

Stav serveru. status-channel řekne, že server je nahoře, jde dolů, nebo se za tolik minut restartuje (jednou za restart, ne při každém varování). Výchozí "chat" je kanál, kde jsou hráči (kanál chat mostu); id kanálu pošle stav jinam, prázdné nikam. Věty jsou jazykové klíče discord.news.up, .down a .restart, které si server může přepsat. news-channel se už nečte — kanál novinek je na novinky.

Seznam kanálů a rolí se čte nejvýš jednou za půl minuty (discord.names-every), ať se jednou změnou deseti kanálů nespotřebuje desetiminutový limit Discordu, sdílený s ostatním, co ten bot dělá.

Otázka „jsi to ty?"

#

Když je zapnuté accounts.ask-on-discord, dostane propojený hráč při připojení soukromou zprávu s tím, kdo se připojuje a odkud, a dvěma tlačítky. Podrobně na stránce Účty.

Tickety na Discordu

#

tickets.category a tickets.roles dají soukromé kanály ticketů do kategorie a pustí k nim tvoje role. Zbytek je na stránce o ticketech.

Pomohla vám tahle stránka?

Otevře panel zpětné vazby s touhle stránkou v příloze. Přistane do jedné fronty se vším ostatním.