صلاحيات Gateway المميزة في Discord ثلاث صلاحيات اختيارية (Presence وServer Members وMessage Content) يجب على مالك البوت تفعيلها في بوابة المطوّرين قبل أن ترسل Discord تلك البيانات عبر Gateway. وُجدت لأن قوائم الأعضاء ونصوص الرسائل حساسة بطبيعتها. إذا فاتتك واحدة منها، فالبوت لا يُظهر خطأً صريحاً؛ بل يتوقف بصمت عن رؤية الأحداث التي يحتاجها، ولهذا يعود كثير من حالات "البوت متصل لكنه لا يفعل شيئاً" إلى إعداد صلاحية مُطفأة.

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 ✗

ما هي صلاحية Gateway فعلياً

عندما يتصل بوت بـ Discord، لا يستقبل تلقائياً كل حدث يحدث في كل خادم موجود فيه. بل يشترك في فئات من الأحداث تُسمّى صلاحيات (intents): أحداث الرسائل، وأحداث حالة القناة الصوتية، وأحداث تحديث الخادم، وهكذا. ومعظم الصلاحيات يمكن التصريح بها في الكود مجاناً، وتمنحها Discord دون سؤال. أما ثلاث منها فمختلفة. تسميها Discord صلاحيات مميزة لأن البيانات وراءها، أي من هو بالضبط في الخادم وما الذي يكتبه الأعضاء، قوية بما يكفي لتتطلب من مالك البوت أن يوافق عليها صراحةً عبر بوابة المطوّرين، لا في الكود فقط.

إذا طلب كود البوت صلاحية مميزة لكن المالك لم يفعّلها لذلك التطبيق، ترفض Discord تسجيل الدخول بالكامل. لا يتصل البوت بحالة متدهورة؛ بل لا يتصل أصلاً، ويُغلق Gateway مع خطأ "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، أي أحداث الانضمام والمغادرة التي تعتمد عليها تقريباً كل ميزة متعلقة بالعضوية.

  • رسائل الترحيب. تُطلق رسالة الترحيب عند الانضمام. وبدون الصلاحية، لا يستقبل البوت حدث الانضمام أبداً، فلا يُنشر شيء ولا يُمنح دور تلقائي.
  • أعداد الأعضاء. قناة عدد الأعضاء المباشرة أو الـ widget تتحدث من أحداث الانضمام والمغادرة نفسها. وبدون الصلاحية تتجمد عند آخر عدد رآه.
  • الحماية من الإغراق والهجمات الجماعية. اكتشاف هجوم انضمام جماعي، أو مراقبة تغييرات الأدوار والألقاب المشبوهة، يعتمدان كلاهما على أحداث الأعضاء. إذا أطفأت الصلاحية، يتوقف مسار الاكتشاف كله.
  • تدفقات التحقق. أي بوابة تفحص تاريخ انضمام العضو أو أدواره أو عمر حسابه تحتاج إلى كائن العضو الذي توفره الصلاحية.

ما الذي ينكسر بدون Message Content Intent

Message Content Intent تتحكم في نص الرسالة الفعلي. يستطيع البوت أن يرى أن قناة استقبلت رسالة ومن أرسلها بدون هذه الصلاحية؛ لكنه لا يستطيع قراءة ما قيل.

  • الردود التلقائية. مطابقة كلمة محفّزة مثل "refund" أو "how do I pay" تتطلب قراءة نص الرسالة. لا محتوى، لا تطابق، لا رد.
  • ردود دردشة الذكاء الاصطناعي. مساعد ذكاء اصطناعي يجيب عن الأسئلة في قناة أو عند الإشارة إليه يحتاج إلى السؤال نفسه. وبدون الصلاحية يعرف أن أحداً تكلم، لكن لا يملك ما يرسله إلى النموذج.
  • نصوص التذاكر المحفوظة. النص الذي يسجّل ما قاله الفريق والأعضاء فعلاً في التذكرة يحتاج إلى محتوى الرسائل ليسجّله؛ وبدونه ستحصل على قائمة بالطوابع الزمنية وأسماء المستخدمين بلا محتوى.
  • الإشراف المعتمد على البادئة. أي شيء يفحص الرسائل بحثاً عن كلمات محظورة أو روابط دعوة أو أنماط سبام يقرأ المحتوى بالطريقة نفسها التي يقرأ بها الرد التلقائي.

أوامر الشرطة المائلة غير متأثرة في الحالتين، لأن Discord تسلّم مدخلات الأوامر منفصلة عن الرسائل العادية. وتحديداً، الميزات التي تقرأ ما يكتبه الأعضاء في الرسائل العادية هي التي تعتمد على هذه الصلاحية.

كيفية تفعيل الصلاحيات في بوابة المطوّرين

  1. افتح بوابة مطوّري Discord واختر تطبيق البوت.
  2. انقر على Bot في الشريط الجانبي الأيسر.
  3. مرّر إلى Privileged Gateway Intents.
  4. فعّل Server Members Intent وMessage Content Intent (أضف Presence Intent فقط إذا كان البوت يحتاج تحديداً إلى بيانات الحالة المباشرة).
  5. احفظ التغييرات، ثم أعد تشغيل البوت أو أعد الاتصال به حتى يلتقط الصلاحيات الجديدة عند تسجيل الدخول التالي.

يسري المفتاح عند الاتصال التالي بالـ Gateway، لا فورياً لبوت سجّل الدخول بالفعل. والبوت الذي كان في جلسة نشطة عندما أُطفئت صلاحية عادةً ما تقطع Discord اتصاله، ويحتاج إلى إعادة الاتصال بعد إعادة تفعيل الصلاحية.

قاعدة التحقق عند 100 خادم

يكفي تبديل المفتاح في البوابة لبوت موجود في أقل من 100 خادم. وعندما يتجاوز عدد التثبيتات لبوت 100 خادم، تشترط Discord أن يمرّ التطبيق بـ bot verification، وهي عملية مراجعة يقدّم فيها المالك البوت للموافقة، قبل أن يُسمح له باستخدام الصلاحيات المميزة على هذا النطاق. والبوت غير الموثّق الذي يصل إلى هذا الحد يستمر في العمل في الخوادم التي هو فيها بالفعل، لكن يُمنع من الانضمام إلى خوادم جديدة حتى تُمنح الموافقة أو تُسقَط الصلاحيات المميزة التي لا يحتاجها بالضرورة.

هذه قاعدة على مستوى منصة Discord، وليست شيئاً يتحكم فيه أي مضيف بوت منفرد. وهي موجودة كي لا تُمنح صلاحيات حساسة للبيانات مثل Server Members وMessage Content على نطاق واسع دون مراجعة Discord لما يفعله البوت بها.

لماذا تتحقق Noxyr من الصلاحيتين قبل قبول التوكن

ميزة Custom Bot في Noxyr تشغّل مجموعة الميزات الكاملة تحت توكن بوت تزوّده أنت. ولأن رسائل الترحيب وأعداد الأعضاء ودردشة الذكاء الاصطناعي ونصوص التذاكر والردود التلقائية كلها تعتمد على الصلاحيتين أعلاه، تتحقق لوحة التحكم من تفعيل Server Members Intent وMessage Content Intent قبل أن تقبل توكنك أصلاً. والتوكن الذي يُلصق وإحدى الصلاحيتين مُطفأة يُرفض منذ البداية، بدلاً من قبوله وتركه يفشل بهدوء لاحقاً بخطأ Gateway مربك.

إذا أُطفئت صلاحية بعد أن يكون البوت يعمل بالفعل (مثلاً، يُلغي أحدهم تحديدها في البوابة بعد شهور)، فإن Gateway في Discord تغلق الاتصال برمز 4013 أو 4014. وعُقد الاستضافة في Noxyr تلتقط رمز الإغلاق المحدد هذا، فتُوقف البوت، وتنشر رسالة حالة بلغة بسيطة تخبرك بالإعداد الدقيق الذي يجب إصلاحه، بدلاً من تركه عالقاً في حلقة إعادة اتصال صامتة. والشرح الكامل لهذا الخطأ وأسباب التوقف الشائعة الأخرى موجود في دليل استكشاف أخطاء Gateway 4004/4014.

أسئلة شائعة

هل أحتاج إلى Presence Intent لبوت Noxyr المخصص؟ لا. Noxyr تطلب فقط Server Members Intent وMessage Content Intent. ويمكن أن يبقى Presence Intent مُطفأً.

لماذا يظهر بوتي "disallowed intents" رغم أنني فعّلت المفاتيح؟ الـ Gateway يقرأ الحالة الحالية فقط عند تسجيل دخول جديد. أعد تشغيل البوت بعد حفظ إعدادات البوابة حتى يعيد الاتصال مع تطبيق الصلاحيات الجديدة.

هل يعني تفعيل Message Content Intent أن Discord تشارك سجل الرسائل مع البوت؟ لا. تؤثر فقط في الرسائل المرسلة أثناء اتصال البوت وامتلاكه حق الوصول إلى تلك القناة. ولا تمنح وصولاً بأثر رجعي إلى رسائل قديمة لم يكن البوت موجوداً فيها.

هل سيُحظر بوتي لطلبه صلاحيات مميزة؟ لا. طلبها واستخدامها للميزات التي تحتاجها، كرسائل الترحيب والردود التلقائية وردود الذكاء الاصطناعي، هو بالضبط الغرض منها. والتحقق موجود للبوتات على نطاق واسع، وليس عقوبة.

اطّلع على شرح الإعداد الكامل في وثائق Custom Bot، أو أضف Noxyr مجاناً وتجنّب الصلاحيات كلياً بتشغيل البوت الرئيسي بدلاً من بوت مخصص يعتمد على توكن.