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.
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.