كيف يعمل (البنية)
قبل إعداد هذا، من المهم أن تفهم أنك لست بحاجة إلى استضافة تطبيق بوت منفصل أو تشغيل برنامج نصي “بوت” (مثل بوت Node.js أو Python) على الخادم الخاص بك.
يستخدم هذا التكامل تفاعلات ديسكورد (Webhooks) مدمجة مع التعديلات التدريجية لمحاكاة تجربة بث الذكاء الاصطناعي:
- إجراء المستخدم: يكتب المستخدم
/askفي خادم ديسكورد الخاص بك. - الويب هوك (Webhook): يرسل ديسكورد طلب HTTP POST مباشرة إلى خادم Discourse الخاص بك.
- إقرار فوري (Ack): يستجيب Discourse على الفور بحالة “جارٍ البحث…”. هذا يمنع مهلة “فشل التفاعل” في ديسكورد.
- الاستجابة المتدفقة: تبدأ مهمة في الخلفية في إنشاء إجابة الذكاء الاصطناعي. أثناء إنتاج الذكاء الاصطناعي للنص، يرسل Discourse طلبات HTTP PATCH متكررة لتعديل رسالة ديسكورد في الوقت الفعلي.
النتيجة: يرى المستخدمون الإجابة وهي تُكتب مباشرة، تمامًا مثل ChatGPT، بدلاً من انتظار كتلة نصية ثابتة واحدة.
الميزة الرئيسية: نظرًا لأن Discourse يعالج المنطق داخليًا، فلا توجد بنية تحتية إضافية للصيانة. إذا كان المنتدى الخاص بك متصلاً بالإنترنت، فإن البوت الخاص بك متصل بالإنترنت.
يصف هذا الدليل العملية الكاملة لدمج بوت الذكاء الاصطناعي الخاص بـ Discourse مع خادم ديسكورد. ويتضمن تعليمات محددة للتسجيل اليدوي لأوامر الشرطة المائلة عبر واجهة برمجة التطبيقات (API)، وهو أمر مطلوب حاليًا لتجاوز مشكلات المزامنة التلقائية في المكون الإضافي.
المتطلبات الأساسية
- وصول مسؤول Discourse: يجب أن تكون مسؤولاً عن مثيل Discourse المستضاف ذاتيًا.
- وصول مسؤول ديسكورد: يجب أن يكون لديك أذونات “إدارة الخادم” على خادم ديسكورد المستهدف.
- وصول الطرفية (Terminal Access): ستحتاج إلى طرفية لتشغيل أوامر
curl.
1. إنشاء تطبيق ديسكورد
- انتقل إلى بوابة مطوري ديسكورد (Discord Developer Portal).
- انقر على تطبيق جديد (New Application) في الزاوية العلوية اليمنى.
- امنح تطبيقك اسمًا (على سبيل المثال، “مساعد Discourse”) وانقر على إنشاء (Create).
- نسخ بيانات الاعتماد: في صفحة المعلومات العامة (General Information)، حدد واحفظ ما يلي لوقت لاحق:
2. تكوين مستخدم البوت
-
في قائمة الشريط الجانبي الأيسر، انقر على بوت (Bot).
-
انقر على إعادة تعيين الرمز المميز (Reset Token).
-
تمكين نوايا البوابة (Enable Privileged Intents):
- مرر لأسفل إلى قسم “نوايا البوابة المميزة (Privileged Gateway Intents)”.
- قم بتبديل نية محتوى الرسالة (Message Content Intent) إلى تشغيل (ON). (يسمح هذا للبوت بقراءة الرسائل التي يحتاج إلى الرد عليها).
-
انقر على حفظ التغييرات (Save Changes).
3. تكوين إعدادات Discourse
-
سجّل الدخول إلى لوحة تحكم مسؤول Discourse.
-
انتقل إلى مسؤول (Admin) ← المكونات الإضافية (Plugins) ← الذكاء الاصطناعي (AI) ← الميزات (Features).
-
ابحث عن “discord” وانقر على تحرير:
-
املأ التفاصيل
AI Discord app ID: الصق=ApplicationId=AI Discord app public key: الصق=PublicKey=
-
السماح لخادم ديسكورد الخاص بك:
- افتح تطبيق ديسكورد الخاص بك وقم بتمكين وضع المطور (إعدادات المستخدم ← متقدم ← وضع المطور).
- انقر بزر الماوس الأيمن على أيقونة الخادم الخاص بك في الشريط الجانبي وحدد نسخ معرف الخادم (Copy Server ID).
- في إعدادات Discourse، الصق هذا المعرف في حقل
AI Discord allowed guilds.
4. تعيين نقطة نهاية التفاعلات (Interactions Endpoint)
- قم ببناء عنوان URL لنقطة النهاية الخاص بك:
https://=ForumUrl=/discourse-ai/discord/interactions - عد إلى بوابة مطوري ديسكورد (Discord Developer Portal).
- في صفحة المعلومات العامة (General Information)، مرر لأسفل إلى نقطة نهاية التفاعلات (Interactions Endpoint URL).
- الصق عنوان URL الخاص بك وانقر على حفظ التغييرات (Save Changes).
- نجاح: سيرسل ديسكورد إشارة اختبار. إذا تم الحفظ دون خطأ، فقد قام مثيل Discourse الخاص بك بالتحقق من التوقيع بنجاح.
- فشل: إذا تلقيت خطأ، فتأكد من حفظ
AI Discord app IDوAI Discord app public keyبشكل صحيح في إعدادات Discourse.
5. دعوة البوت
- في بوابة المطور، انقر على التثبيت (Installation) في الشريط الجانبي.
- النطاقات (Scopes): حدد مربعات الاختيار لـ
botوapplications.commands. - أذونات البوت (Bot Permissions): حدد ما يلي:
- إرسال الرسائل (Send Messages)
- تضمين الروابط (Embed Links)
- إرفاق الملفات (Attach Files)
- قراءة سجل الرسائل (Read Message History)
- انسخ رابط التثبيت (Installation Link) في الجزء العلوي من الصفحة.
- افتح هذا الرابط في علامة تبويب المتصفح وقم بتفويض البوت للانضمام إلى خادمك.
6. تسجيل أمر الشرطة المائلة (استدعاء API يدوي)
مهم: يجب أن يكون اسم معلمة الأمر هو query.
لنظام التشغيل Mac / Linux (Bash)
curl -X POST "https://discord.com/api/v10/applications/=ApplicationId=/commands" \
-H "Authorization: Bot =BotToken=" \
-H "Content-Type: application/json" \
-d '{
"name": "ask",
"description": "Ask the AI a question",
"options": [
{
"name": "query",
"description": "What is your question?",
"type": 3,
"required": true
}
]
}'
- استجابة النجاح: يجب أن تتلقى استجابة JSON تحتوي على معرف الأمر الجديد.
- خطأ 401؟ تأكد من الاحتفاظ بكلمة
Bot(مع مسافة) قبل الرمز المميز الخاص بك في رأس التفويض.
7. التحقق
- افتح خادم ديسكورد الخاص بك.
- اكتب
/askفي قناة نصية. - يجب أن تظهر قائمة الأوامر. حدد
/askواكتب سؤالاً في حقلquery. - السلوك المتوقع:
- فوري: يرد البوت “جارٍ البحث…”.
- بعد بضع ثوانٍ: يتم تحديث الرسالة بإجابة الذكاء الاصطناعي.
استكشاف الأخطاء وإصلاحها
| الخطأ | السبب | الحل |
|---|---|---|
| 401 غير مصرح به (في Curl) | تنسيق رمز مميز سيئ | تأكد من أن الرأس هو Authorization: Bot =BotToken=. استخدم الرمز المميز من علامة التبويب Bot، وليس علامة التبويب العامة. |
| استثناء Job: يجب أن يكون السياق مثيلاً لـ BotContext | حمولة خاطئة | تأكد من أنك محدث، تم إصلاح هذا في FIX: Discord Bot crash due to missing BotContext in PersonaReplier by devtekve · Pull Request #36429 · discourse/discourse · GitHub |




