Discord प्रिविलेज्ड गेटवे इंटेंट्स तीन ऐसी ऑप्ट-इन अनुमतियाँ हैं (Presence, Server Members और Message Content) जिन्हें बॉट के मालिक को Developer Portal में चालू करना होता है, उसके बाद ही Discord गेटवे पर वह डेटा भेजता है। ये इसलिए हैं क्योंकि सदस्यों की सूची और संदेश का टेक्स्ट डिफ़ॉल्ट रूप से संवेदनशील हैं। एक भी छूट जाए तो बॉट ज़ोर से कोई एरर नहीं देता। वह बस चुपचाप उन इवेंट्स को देखना बंद कर देता है जिनकी उसे ज़रूरत है। इसीलिए “मेरा बॉट ऑनलाइन है पर कुछ नहीं कर रहा” जैसी समस्या अक्सर किसी इंटेंट टॉगल तक पहुँचती है।

Two privileged intents stay switched on and let data through while a third stays off and blocks it. Developer Portal Server Members Message Content Presence Bot Welcome msgs ✓ Auto-responders ✓ Live presence ✗

गेटवे इंटेंट असल में क्या है

जब कोई बॉट Discord से जुड़ता है, तो उसे अपने हर सर्वर में होने वाला हर इवेंट अपने-आप नहीं मिलता। वह इवेंट की श्रेणियों की सदस्यता लेता है, जिन्हें इंटेंट कहते हैं: मैसेज इवेंट, वॉइस स्टेट इवेंट, गिल्ड अपडेट इवेंट, और इसी तरह। ज़्यादातर इंटेंट कोड में घोषित करने के लिए मुफ़्त हैं और Discord बिना पूछे उन्हें दे देता है। तीन अलग हैं। Discord इन्हें प्रिविलेज्ड इंटेंट कहता है, क्योंकि इनके पीछे का डेटा, यानी सर्वर में कौन है और सदस्य क्या टाइप कर रहे हैं, इतना शक्तिशाली है कि Discord चाहता है कि बॉट का मालिक इसे सिर्फ़ कोड में नहीं, Developer Portal के ज़रिए साफ़ तौर पर चुने।

अगर बॉट का कोड कोई प्रिविलेज्ड इंटेंट माँगता है, लेकिन मालिक ने उस एप्लिकेशन के लिए उसे चालू नहीं किया, तो Discord लॉगिन को सीधे मना कर देता है। बॉट कमज़ोर हालत में ऑनलाइन नहीं आता। वह बिल्कुल कनेक्ट नहीं होता, और गेटवे “disallowed intents” एरर के साथ बंद हो जाता है।

तीन प्रिविलेज्ड इंटेंट

  • Presence Intent. हर सदस्य का ऑनलाइन/आइडल/ऑफ़लाइन स्टेटस और कस्टम एक्टिविटी। इसका इस्तेमाल वे बॉट करते हैं जो लाइव प्रेज़ेंस डेटा दिखाते हैं। ज़्यादातर टिकट, मॉडरेशन और कॉमर्स बॉट, Noxyr सहित, इसे नहीं चाहते।
  • Server Members Intent. पूरी सदस्य सूची, साथ में जॉइन और लीव इवेंट, रोल बदलाव और निकनेम अपडेट। वेलकम संदेश, सदस्य गिनती और एंटी-रेड डिटेक्शन इसी इंटेंट पर टिके हैं।
  • Message Content Intent. संदेश का असली टेक्स्ट, सिर्फ़ यह तथ्य नहीं कि कोई संदेश भेजा गया। इसके बिना बॉट देख सकता है कि किसी ने चैनल में कुछ पोस्ट किया, पर यह नहीं कि उसने क्या लिखा।

Noxyr का कोड इनमें से दो माँगता है: Server Members Intent और Message Content Intent। Presence Intent किसी Noxyr फ़ीचर का हिस्सा नहीं है, इसलिए वह कभी नहीं माँगा जाता और उसे कभी चालू करने की ज़रूरत नहीं पड़ती।

Server Members Intent के बिना क्या टूटता है

Server Members Intent ही बॉट को GUILD_MEMBER_ADD और GUILD_MEMBER_REMOVE इवेंट दिलाता है, यानी जॉइन और लीव इवेंट, जिन पर लगभग हर मेंबरशिप फ़ीचर निर्भर है।

  • वेलकम संदेश। वेलकम संदेश जॉइन पर चलता है। इंटेंट के बिना बॉट को जॉइन इवेंट मिलता ही नहीं, इसलिए कुछ पोस्ट नहीं होता और कोई ऑटो-रोल भी नहीं दिया जाता।
  • सदस्य गिनती। लाइव सदस्य-गिनती चैनल या विजेट उसी जॉइन/लीव इवेंट से अपडेट होता है। इंटेंट के बिना वह आखिरी देखी गई संख्या पर जम जाता है।
  • एंटी-न्यूक और रेड सुरक्षा। बड़े पैमाने पर जॉइन करने वाले रेड को पकड़ना, या संदिग्ध रोल और निकनेम बदलावों पर नज़र रखना, दोनों सदस्य इवेंट पर निर्भर हैं। इंटेंट बंद करें तो पूरा डिटेक्शन रास्ता बंद हो जाता है।
  • वेरिफ़िकेशन फ़्लो। कोई भी गेट जो सदस्य की जॉइन तारीख, रोल या अकाउंट की उम्र जाँचता है, उसे उस सदस्य ऑब्जेक्ट की ज़रूरत है जो यह इंटेंट देता है।

Message Content Intent के बिना क्या टूटता है

Message Content Intent संदेश के असली टेक्स्ट को नियंत्रित करता है। इसके बिना भी बॉट देख सकता है कि किसी चैनल में संदेश आया और उसे किसने भेजा। वह बस यह नहीं पढ़ सकता कि क्या लिखा गया।

  • ऑटो-रिस्पॉन्डर। “refund” या “how do I pay” जैसे ट्रिगर शब्द से मिलान के लिए संदेश का टेक्स्ट पढ़ना पड़ता है। कंटेंट नहीं, तो मिलान नहीं, तो जवाब नहीं।
  • AI चैट जवाब। कोई AI सहायक जो चैनल में या मेंशन पर सवालों के जवाब देता है, उसे सवाल ही चाहिए। इंटेंट के बिना वह जानता है कि किसी ने कुछ कहा, पर मॉडल को भेजने के लिए उसके पास कुछ नहीं होता।
  • टिकट ट्रांसक्रिप्ट। जो ट्रांसक्रिप्ट यह दर्ज करता है कि टिकट में स्टाफ़ और सदस्यों ने असल में क्या कहा, उसे लॉग करने के लिए संदेश कंटेंट चाहिए। इसके बिना आपको सिर्फ़ टाइमस्टैम्प और यूज़रनेम की सूची मिलेगी, बिना किसी कंटेंट के।
  • प्रीफ़िक्स-आधारित मॉडरेशन। संदेशों में प्रतिबंधित शब्द, इनवाइट लिंक या स्पैम पैटर्न खोजने वाली कोई भी चीज़ वही कंटेंट पढ़ती है जो ऑटो-रिस्पॉन्डर पढ़ता है।

स्लैश कमांड किसी भी हाल में प्रभावित नहीं होते, क्योंकि Discord कमांड का इनपुट सामान्य संदेशों से अलग भेजता है। यह इंटेंट खास तौर पर उन फ़ीचर के लिए ज़रूरी है जो सामान्य संदेशों में सदस्यों के टाइप किए हुए को पढ़ते हैं।

Developer Portal में इंटेंट कैसे चालू करें

  1. Discord Developer Portal खोलें और बॉट का एप्लिकेशन चुनें।
  2. बाएँ साइडबार में Bot पर क्लिक करें।
  3. Privileged Gateway Intents तक स्क्रॉल करें।
  4. Server Members Intent और Message Content Intent चालू करें (Presence Intent सिर्फ़ तब जोड़ें जब बॉट को सच में लाइव स्टेटस डेटा चाहिए)।
  5. बदलाव सहेजें, फिर बॉट को रीस्टार्ट या रीकनेक्ट करें ताकि वह अगले लॉगिन पर नए इंटेंट लागू कर सके।

यह टॉगल अगले गेटवे कनेक्शन पर लागू होता है, पहले से लॉग इन बॉट पर तुरंत नहीं। जो बॉट सेशन के बीच में था और जिसका इंटेंट बंद कर दिया गया, उसे आमतौर पर Discord डिस्कनेक्ट कर देता है, और इंटेंट वापस चालू होने पर उसे रीकनेक्ट करना पड़ता है।

100-सर्वर वाला सत्यापन नियम

100 से कम सर्वरों वाले बॉट के लिए पोर्टल में टॉगल चालू करना काफ़ी है। जैसे ही किसी बॉट के इंस्टॉल 100 सर्वर पार करते हैं, Discord को उस एप्लिकेशन के लिए बॉट वेरिफ़िकेशन चाहिए। यह एक समीक्षा प्रक्रिया है जहाँ मालिक मंज़ूरी के लिए बॉट जमा करता है, और उस पैमाने पर प्रिविलेज्ड इंटेंट इस्तेमाल करने से पहले यह ज़रूरी है। जो असत्यापित बॉट इस सीमा तक पहुँचता है, वह उन्हीं सर्वरों में चलता रहता है जिनमें वह पहले से है, पर नए सर्वरों में जुड़ने से रुक जाता है, जब तक वेरिफ़िकेशन न मिले या जो प्रिविलेज्ड इंटेंट सख़्ती से ज़रूरी नहीं हैं उन्हें हटाया न जाए।

यह Discord प्लेटफ़ॉर्म का नियम है, कोई भी बॉट होस्ट इसे नियंत्रित नहीं करता। यह इसलिए है ताकि Server Members और Message Content जैसे संवेदनशील डेटा वाले इंटेंट बड़े पैमाने पर बिना Discord की अपनी समीक्षा के न बाँटे जाएँ, कि बॉट उनके साथ क्या करता है।

Noxyr टोकन स्वीकार करने से पहले दोनों इंटेंट क्यों जाँचता है

Noxyr का Custom Bot फ़ीचर आपके दिए बॉट टोकन के तहत अपना पूरा फ़ीचर सेट चलाता है। चूँकि वेलकम संदेश, सदस्य गिनती, AI चैट, टिकट ट्रांसक्रिप्ट और ऑटो-रिस्पॉन्डर, सब ऊपर के दो इंटेंट पर निर्भर हैं, डैशबोर्ड आपका टोकन स्वीकार करने से पहले जाँचता है कि Server Members Intent और Message Content Intent दोनों चालू हैं। जो टोकन दोनों में से किसी एक के बंद होने पर डाला जाए, उसे पहले ही मना कर दिया जाता है, बजाय इसके कि वह स्वीकार हो और बाद में किसी उलझन भरे गेटवे एरर के साथ चुपचाप विफल हो।

अगर बॉट के चलते समय कोई इंटेंट बंद हो जाए (जैसे कोई महीनों बाद पोर्टल में उसे अनचेक कर दे), तो Discord का गेटवे कनेक्शन कोड 4013 या 4014 के साथ बंद कर देता है। Noxyr के होस्टिंग नोड इस खास क्लोज़ कोड को पकड़ते हैं, बॉट को बंद कर देते हैं, और एक सरल भाषा वाला स्टेटस संदेश पोस्ट करते हैं कि कौन-सी सेटिंग ठीक करनी है। यह बिना किसी चुप्पी वाले रीकनेक्ट लूप में फँसने से बेहतर है। इस एरर और बाकी आम ऑफ़लाइन कारणों का पूरा विवरण हमारी गेटवे एरर 4004/4014 समस्या-निवारण गाइड में है।

आम सवाल

क्या Noxyr के Custom Bot के लिए Presence Intent चाहिए? नहीं। Noxyr सिर्फ़ Server Members Intent और Message Content Intent माँगता है। Presence Intent बंद रह सकता है।

टॉगल चालू करने के बावजूद मेरा बॉट “disallowed intents” क्यों दिखाता है? गेटवे सिर्फ़ नए लॉगिन पर मौजूदा स्थिति पढ़ता है। पोर्टल सेटिंग्स सहेजने के बाद बॉट को रीस्टार्ट करें ताकि वह नए इंटेंट के साथ दोबारा कनेक्ट हो।

क्या Message Content Intent चालू करने का मतलब है कि Discord बॉट के साथ संदेशों का इतिहास साझा करता है? नहीं। यह सिर्फ़ उन संदेशों पर असर डालता है जो बॉट के कनेक्टेड रहते और उस चैनल तक पहुँच होने पर भेजे जाते हैं। यह उन पुराने संदेशों तक पहुँच नहीं देता जब बॉट मौजूद नहीं था।

क्या प्रिविलेज्ड इंटेंट माँगने से मेरा बॉट बैन हो जाएगा? नहीं। उन फ़ीचर के लिए इन्हें माँगना और इस्तेमाल करना, जैसे वेलकम संदेश, ऑटो-रिस्पॉन्डर और AI जवाब, बिल्कुल इसी के लिए हैं। वेरिफ़िकेशन बड़े पैमाने के बॉट के लिए है, दंड के तौर पर नहीं।

पूरा सेटअप वॉकथ्रू Custom Bot दस्तावेज़ में देखें, या Noxyr मुफ़्त जोड़ें और इंटेंट की झंझट पूरी तरह छोड़ दें, टोकन वाले कस्टम बॉट की जगह मुख्य बॉट चलाकर।