यह ट्यूटोरियल बताता है कि Noxyr Server API कुंजी कैसे बनाएं, Node.js और ब्राउज़र से छह एंडपॉइंट कैसे कॉल करें, और सार्वजनिक पेज पर Discord का लाइव डेटा कैसे दिखाएं। अगर आप अपनी वेबसाइट पर एक असली सदस्य काउंटर चाहते थे जो बॉट कनेक्शन के बिना अपडेट हो, तो यही वह तरीका है।
स्टेप 1: कुंजी बनाएं
Noxyr डैशबोर्ड खोलें, अपना सर्वर चुनें और API Access पर जाएं। Generate API Key पर क्लिक करें। कुंजी (nxr_ से शुरू होती है) एक बार दिखाई जाती है, इसे अभी किसी एनवायरनमेंट वेरिएबल में कॉपी करें। सर्वर पर सिर्फ़ SHA-256 हैश सहेजा जाता है, इसलिए खोई हुई कुंजी का मतलब है उसे दोबारा बनाना।
स्टेप 2: स्कोप सेट करें
कुंजी के नीचे छह टॉगल तय करते हैं कि कुंजी क्या पढ़ सकती है: Server Overview, Tickets, Activity, Invoices, Reviews, Giveaways। जिसकी ज़रूरत न हो उसे बंद करें। बंद स्कोप तुरंत 403 लौटाता है, इसलिए लीक हुई कुंजी भी उन स्कोप को नहीं पढ़ सकती जिन्हें आपने कभी चालू नहीं किया।
स्टेप 3: Curl से जाँच
curl https://noxyrbot.com/api/v1/server \
-H "Authorization: Bearer nxr_YOUR_KEY"
आपको JSON दिखना चाहिए जिसमें आपके सर्वर का id, नाम, आइकन URL, सदस्य संख्या, ऑनलाइन संख्या और बूस्ट हों।
स्टेप 4: 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);
स्टेप 5: ब्राउज़र से कॉल करें
CORS खुला है, इसलिए आप सीधे किसी स्टैटिक साइट से fetch कर सकते हैं। कुंजी को ऐसे क्लाइंट-साइड कोड में एम्बेड न करें जो असली उपयोगकर्ताओं तक जाए: DevTools खोलने वाला कोई भी उसे देख सकता है। दो सुरक्षित तरीके हैं:
- प्रॉक्सी के पीछे सार्वजनिक डैशबोर्ड: आपकी तरफ़ का एक छोटा सर्वरलेस फ़ंक्शन एनवायरनमेंट वेरिएबल से कुंजी पढ़ता है, Noxyr को कॉल करता है और JSON को ब्राउज़र तक भेजता है।
- भरोसेमंद आंतरिक टूल: पेज को अपने ऑथ के पीछे रखें, फिर कुंजी डालें।
// 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' }
});
}
};
स्टेप 6: उसे दिखाएं
<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>
रेट लिमिट और कैशिंग
प्रति कुंजी प्रति मिनट 60 अनुरोध। निजी डैशबोर्ड पर रीयल-टाइम बढ़िया लगता है, पर सार्वजनिक साइट पर यह बर्बादी है। अपनी प्रॉक्सी परत में ऊपर के जवाबों को 30–60 सेकंड के लिए कैश करें, और आप सीमा के आसपास भी नहीं पहुँचेंगे।
एरर जवाब
401 unauthorized: कुंजी गायब है या गलत है।403 key_disabled: डैशबोर्ड पर कुंजी बंद की गई है।403 scope_disabled: उस एंडपॉइंट का स्कोप बंद है; डैशबोर्ड पर उसे चालू करें।404 guild_unavailable: बॉट उस सर्वर से हटा दिया गया है।429 rate_limited: गति धीमी करें।
API इस तरह क्यों बना है, यह जानना है? Discord बॉट के लिए API डिज़ाइन सिद्धांत।