STYGION Dokumentace Hledat v dokumentaci

/vote: všechny hlasovací weby na jednom místě

Kdy se každý hlasovací web znovu otevře hráči, kolik hlasů má, jak daleko je další odměna, připomínka v chatu a ukazatel party, který svítí jen když má. Novinka v 0.3.

Keystone 0.2.8 Aktualizováno 5 min čtení
Na téhle stránce 7 částí
  1. Co vidí hráč
  2. Jak se weby popíšou: votes.lists
  3. Stránka
  4. Hlasy, série a měsíc
  5. Připomínka v chatu
  6. Ukazatel party
  7. V editoru a v API

/vote: všechny hlasovací weby na jednom místě

Novinka v 0.3. /vote dřív vypsal odkazy. Teď odpoví na to, co hráč opravdu chce vědět: kde můžu hlasovat hned, kolik mám hlasů a kolik zbývá do další odměny. Všechno níž je nastavení v votes.toml (a v Nastavení a na obrazovce Votes v editoru); nic není přibité k jednomu serveru ani k jednomu hlasovacímu webu.

Co vidí hráč

#
Kód
» Hlasuj pro server:
   » hlasuj teď | Czech-Craft - https://czech-craft.eu/server/vy/vote/
   » za 1 h 12 min | Minecraft-list.cz - https://...
   » asi za 23 h 5 min | minecraft-mp.com - https://...
Všechny weby na jedné stránce: https://example.com/vote
Právě teď můžeš hlasovat na 1 z 7 webů.
Tvoje hlasy: 3 dnes, 41 celkem, 4 dny v řadě.
Odměna za sérii 7 dní v řadě: zbývají 3 dny.
Tento měsíc: 11 hlasů - na odměňované místo (první 3) ti zbývá 4. /vote top
Hlasovací párty: 12 z 25 - zbývá 13.

Každá adresa je odkaz, na který jde kliknout. Čas s „asi“ je odhad; bez něj ho řekl přímo hlasovací web.

Jak se weby popíšou: votes.lists

#

Jeden řádek na web, části oddělené |:

Kód
service=Czech-Craft.eu | name=Czech-Craft | link=https://czech-craft.eu/server/vy/vote/ | every=2h | check=https://czech-craft.eu/api/server/vy/player/{player}/next_vote/ | path=next_vote | tz=Europe/Prague
service=Minecraft-MP.com | name=minecraft-mp.com | link=https://minecraft-mp.com/server/123/vote/ | every=24h
  • service (povinné) je jméno, které web posílá s hlasem, přesně jako v votes.services.
  • name a link čte a klikne hráč.
  • every je, jak dlouho web nechá hráče čekat.
  • check a path jsou volitelné: https adresa, na které web odpoví, kdy může tenhle hráč hlasovat příště, a kde v jeho JSON odpovědi je čas (next_vote, [0].nextPossibleVote, data.next). Doplní se {player}, {year} a {month}. Čas může být sekundy nebo milisekundy od roku 1970, ISO čas, nebo 2026-10-24 13:34:51 v pásmu tz (výchozí votes.time-zone).
  • {key:name} v check vezme klíč ze souboru lists.keys ve složce hlasů. Dva řádky na klíč: name=klíč a name.host=api.example.com. Klíč se pošle jen na host, který je napsaný vedle něj: dosadí se jen do https adresy s přesně tímhle hostem (nikdy do samotného hostu), jinak se nepoužije a log to řekne. Klíče se nikdy nepíšou do nastavení, takže je nevidí editor, API ani asistent, a kdo smí měnit nastavení, nepošle klíč na vlastní server.

Odkud se čas bere. Když web odpoví, platí jeho odpověď. Když takovou adresu nemá, nejede, je pomalý (votes.lists-timeout, výchozí 4 vteřiny) nebo odpoví nečitelně, Keystone odhadne: poslední hlas, který tenhle server od webu dostal, plus every (bez every interval, kterým votes.site-cooldown počítá hlasy). Web, který selhal, se 45 vteřin nevolá, aby mrtvý web nezpomaloval /vote všem. Žádný čas není v kódu.

Co opouští server a kam smí. Jen když napíšeš check: jméno hráče v adrese, kterou jsi napsal, na web, který jsi uvedl, když ten hráč napíše /vote (odpovědi se pamatují až minutu; připomínka v chatu neposílá nic). Bez check se nikam nic neposílá. Používá se jen https a jen veřejné adresy: jméno, které míří na tenhle stroj, soukromou síť, link-local adresu (i adresu metadat v cloudu), carrier-grade NAT nebo unique-local IPv6, se odmítne dřív, než se cokoli pošle, takže se nastavením nedá dosáhnout na to, co vidí jen tenhle stroj. Přesměrování se nesledují, odpověď se čte nejvýš do 64 KiB a co web odpověděl, se nikomu neukazuje: editor a API dostanou jen čas (nebo že je odhadnutý).

S prázdným votes.lists vypíše /vote řádky z votes.sites jako dřív.

Stránka

#

votes.page je jeden odkaz na stránku se všemi weby, třeba hlasovací stránka tvého webu. /vote ji vypíše pod weby.

Hlasy, série a měsíc

#
  • Dnes / celkem / série jdou ze stejné tabulky, kterou čtou pravidla hlasů, takže číslo, které hráč vidí, je to, se kterým se počítá.
  • Odměna za sérii: nejbližší řádek votes.streaks nad hráčovou sérií a kolik dní zbývá.
  • Měsíc: hráčovo místo a hlasy, a s votes.top.rewards kolik hlasů ještě chybí na poslední odměňované místo. /vote top ukáže žebříček.

Připomínka v chatu

#

votes.remind.chat (výchozí zapnuto): hráči, který někde může hlasovat, napíše „Právě teď můžeš hlasovat na 5 ze 7 webů“, nejvýš jednou za votes.remind.chat-every (výchozí 3 hodiny), první votes.remind.chat-after-join (výchozí 3 minuty) po připojení. Kontroluje se každých pět minut a používá jen to, co server už ví, takže žádnému webu nic neposílá. Hráč ji vypne /vote remind chat off (a zapne /vote remind chat on). /vote remind on je druhá připomínka, soukromá zpráva na Discordu.

Ukazatel party

#

Boss bar, který počítá posledních pár hlasů do cíle party, dřív visel na obrazovce pořád. Teď se ukáže na votes.party.bar-for (výchozí 20 vteřin) po hlasu, který ho pohnul, a zmizí. 0s vrátí staré chování: svítí, dokud je počet v rozmezí votes.party.bar-from od cíle.

V editoru a v API

#

Obrazovka Votes vypíše weby a u hráče, kterého vyhledáš, kdy se mu který otevře. GET /v1/votes/lists (scope players.read) vrací totéž, s ?player= pro jednoho hráče.

Každý hlas na tvou vlastní hlasovací stránku (votes.report.*, vypnuté, dokud to nenastavíš): report.url je https adresa, na kterou se posílá JSON (POST) – {"type":"vote","server","player","list","at"} za každý přijatý hlas a {"type":"lists","server","lists":[…]} každých report.every (5 minut, jen když se něco změnilo) se seznamem hlasovacích webů a čekáním – pro celou hlasovací stránku na tvém webu nebo pro bota. report.key jde jako Bearer token, report.server je jméno tohoto serveru v reportech (klíč světa, třeba mc; prázdné neposílá žádné). Adresy uvnitř sítě se odmítnou, pokud majitel nezapne report.allow-local; nastavit cokoli z toho smí jen majitel.

Texty jsou v jazykových souborech: votes.where.*, votes.list.* a votes.remind.chat*; upravíš je na obrazovce Languages v editoru.

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.