Tento návod provede vygenerováním klíče Noxyr Server API, voláním šesti endpointů z Node.js i z prohlížeče a zobrazením živých dat z Discordu na veřejné stránce. Pokud jste kdy chtěli na svém webu skutečný počítadlo členů, které se aktualizuje bez připojení bota, je to přesně tohle.

A key is generated, a curl request is sent, and the JSON response renders as live text on a page. 1 nxr_••••••••• 2 curl /api/v1/server 3 { memberCount: 812 } 812 members online

Krok 1: Vygenerujte klíč

Otevřete dashboard Noxyru, vyberte svůj server a přejděte do sekce Přístup k API. Klikněte na Vygenerovat API klíč. Klíč (začíná nxr_) se zobrazí jen jednou, hned si ho zkopírujte do proměnné prostředí. Na serveru se ukládá jen hash SHA-256, takže ztracený klíč znamená vygenerování nového.

Krok 2: Nastavte oprávnění

Pod klíčem je šest přepínačů, které určují, co klíč smí číst: Přehled serveru, Tikety, Aktivita, Faktury, Recenze, Soutěže. Vypněte všechno, co nepotřebujete. Vypnuté oprávnění vrátí okamžitě 403, takže i uniklý klíč nemůže číst oprávnění, která jste nikdy nezapnuli.

Krok 3: Zkušební volání přes curl

curl https://noxyrbot.com/api/v1/server \
  -H "Authorization: Bearer nxr_YOUR_KEY"

Měli byste dostat JSON s ID vašeho serveru, názvem, URL ikony, počtem členů, počtem online a boosty.

Krok 4: Zavolejte to z Node.js

const KEY = process.env.NOXYR_API_KEY;

async function getStats() {
    const [server, tickets, activity] = await Promise.all([
        fetch('https://noxyrbot.com/api/v1/server',              { headers: { Authorization: `Bearer ${KEY}` } }),
        fetch('https://noxyrbot.com/api/v1/tickets',             { headers: { Authorization: `Bearer ${KEY}` } }),
        fetch('https://noxyrbot.com/api/v1/activity?days=7',     { headers: { Authorization: `Bearer ${KEY}` } })
    ]);
    return {
        server:   await server.json(),
        tickets:  await tickets.json(),
        activity: await activity.json()
    };
}

getStats().then(console.log);

Krok 5: Zavolejte to z prohlížeče

CORS je otevřený, takže můžete načítat data přímo ze statického webu. Klíč nevkládejte do kódu na straně klienta, který se dostane ke skutečným uživatelům: kdokoli, kdo otevře DevTools, ho uvidí. Dva bezpečné postupy:

  • Veřejný dashboard za proxy: malá serverless funkce na vaší straně načte klíč z proměnné prostředí, zavolá Noxyr a přepošle JSON do prohlížeče.
  • Důvěryhodný interní nástroj: stránku zakryjte vlastním přihlášením a teprve potom do ní klíč přidejte.
// Cloudflare Worker / Vercel Edge - key stays on the server
export default {
    async fetch(request, env) {
        const upstream = await fetch('https://noxyrbot.com/api/v1/server', {
            headers: { Authorization: `Bearer ${env.NOXYR_API_KEY}` }
        });
        return new Response(await upstream.text(), {
            headers: { 'content-type': 'application/json', 'cache-control': 'public, max-age=60' }
        });
    }
};

Krok 6: Vykreslení

<div id="members">…</div>
<script>
    fetch('/api/live-server-stats')
        .then((r) => r.json())
        .then((data) => {
            document.getElementById('members').textContent =
                `${data.memberCount.toLocaleString()} members · ${data.onlineCount} online`;
        });
</script>

Limity požadavků a cache

60 požadavků za minutu na jeden klíč. Živá data se na soukromém dashboardu hodí, ale na veřejném webu jsou plýtvání: odpovědi z upstreamu si v proxy vrstvě ukládejte do cache na 30 až 60 sekund a k limitu se ani nepřiblížíte.

Chybové odpovědi

  • 401 unauthorized: chybějící nebo neplatný klíč.
  • 403 key_disabled: klíč je na dashboardu vypnutý.
  • 403 scope_disabled: oprávnění pro daný endpoint je vypnuté; opravte to na dashboardu.
  • 404 guild_unavailable: bot byl z tohoto serveru odebrán.
  • 429 rate_limited: zpomalte.

Chcete vědět, proč je API navržené právě takto? Principy návrhu API pro boty na Discordu.