Discord
الحالة: جاهز للرسائل المباشرة وقنوات النقابة عبر بوابة Discord الرسمية.
الإقران
الرسائل المباشرة في Discord تكون افتراضيًا في وضع الإقران.
الأوامر المائلة (Slash)
سلوك الأوامر الأصلي وفهرس الأوامر.
استكشاف أخطاء القنوات
تشخيصات عبر القنوات وتدفق الإصلاح.
الإعداد السريع
ستحتاج إلى إنشاء تطبيق جديد مع بوت، إضافة البوت إلى خادمك، وإقرانه بـ OpenClaw. نوصي بإضافة البوت الخاص بك إلى خادمك الخاص. إذا لم يكن لديك واحد بعد، قم بإنشاء واحد أولاً (اختر Create My Own > For me and my friends).
الخطوة 1: إنشاء تطبيق وبوت Discord
اذهب إلى بوابة مطوري Discord وانقر على New Application. سمّه شيئًا مثل "OpenClaw". انقر على Bot في الشريط الجانبي. عيّن Username إلى ما تسمي به وكيل OpenClaw الخاص بك.
الخطوة 2: تمكين النوايا المميزة (Privileged Intents)
ما زلت في صفحة Bot، انتقل لأسفل إلى Privileged Gateway Intents وقم بتمكين:
- Message Content Intent (مطلوب)
- Server Members Intent (موصى به؛ مطلوب لقوائم السماح بالصلاحيات ومطابقة الاسم بالمعرف)
- Presence Intent (اختياري؛ مطلوب فقط لتحديثات الحالة)
الخطوة 3: نسخ رمز البوت (Bot Token) الخاص بك
ارجع لأعلى في صفحة Bot وانقر على Reset Token.
ℹ️ رغم الاسم، هذا يُنشئ أول رمز لك — لا يتم "إعادة تعيين" أي شيء.
انسخ الرمز واحفظه في مكان ما. هذا هو رمز البوت (Bot Token) الخاص بك وستحتاجه قريبًا.
الخطوة 4: إنشاء رابط دعوة وإضافة البوت إلى خادمك
انقر على OAuth2 في الشريط الجانبي. ستقوم بإنشاء رابط دعوة مع الأذونات الصحيحة لإضافة البوت إلى خادمك. انتقل لأسفل إلى OAuth2 URL Generator وقم بتمكين:
botapplications.commands
سيظهر قسم Bot Permissions أدناه. قم بتمكين:
- View Channels
- Send Messages
- Read Message History
- Embed Links
- Attach Files
- Add Reactions (اختياري)
انسخ الرابط المُنشأ في الأسفل، الصقه في متصفحك، اختر خادمك، وانقر على Continue للتوصيل. يجب أن ترى الآن البوت الخاص بك في خادم Discord.
الخطوة 5: تمكين وضع المطور وجمع معرفاتك
عد إلى تطبيق Discord، تحتاج إلى تمكين وضع المطور حتى تتمكن من نسخ المعرفات الداخلية.
- انقر على User Settings (أيقونة الترس بجوار صورتك الشخصية) → Advanced → شغّل Developer Mode
- انقر بزر الماوس الأيمن على أيقونة الخادم في الشريط الجانبي → Copy Server ID
- انقر بزر الماوس الأيمن على صورتك الشخصية → Copy User ID
احفظ معرف الخادم (Server ID) و معرف المستخدم (User ID) الخاصين بك جنبًا إلى جنب مع رمز البوت — ستُرسل الثلاثة إلى OpenClaw في الخطوة التالية.
الخطوة 6: السماح بالرسائل المباشرة من أعضاء الخادم
لكي يعمل الإقران، يحتاج Discord إلى السماح للبوت الخاص بك بإرسال رسائل مباشرة إليك. انقر بزر الماوس الأيمن على أيقونة الخادم → Privacy Settings → شغّل Direct Messages. هذا يسمح لأعضاء الخادم (بما في ذلك البوتات) بإرسال رسائل مباشرة إليك. أبقِ هذا مفعلاً إذا كنت تريد استخدام الرسائل المباشرة في Discord مع OpenClaw. إذا كنت تخطط لاستخدام قنوات النقابة فقط، يمكنك تعطيل الرسائل المباشرة بعد الإقران.
الخطوة 7: الخطوة 0: ضبط رمز البوت الخاص بك بشكل آمن (لا ترسله في الدردشة)
رمز بوت Discord الخاص بك هو سر (مثل كلمة المرور). عيّنه على الجهاز الذي يعمل عليه OpenClaw قبل مراسلة وكيلك.
openclaw config set channels.discord.token '"YOUR_BOT_TOKEN"' --json
openclaw config set channels.discord.enabled true --json
openclaw gateway
إذا كان OpenClaw يعمل بالفعل كخدمة خلفية، استخدم openclaw gateway restart بدلاً من ذلك.
الخطوة 8: تكوين OpenClaw والإقران
تحدث مع وكيل OpenClaw الخاص بك على أي قناة موجودة (مثل Telegram) وأخبره. إذا كان Discord هو قناتك الأولى، استخدم واجهة سطر الأوامر / علامة التبويب config بدلاً من ذلك.
“I already set my Discord bot token in config. Please finish Discord setup with User ID
<user_id>and Server ID<server_id>.”
الخطوة 9: الموافقة على أول إقران عبر الرسائل المباشرة
انتظر حتى تعمل البوابة، ثم أرسل رسالة مباشرة إلى البوت الخاص بك في Discord. سيرد برمز إقران.
أرسل رمز الإقران إلى وكيلك على قناتك الحالية:
“Approve this Discord pairing code:
<CODE>”
تنتهي صلاحية رموز الإقران بعد ساعة واحدة. يجب أن تكون الآن قادرًا على الدردشة مع وكيلك في Discord عبر الرسائل المباشرة.
ℹ️ حل الرمز المميز (Token) يراعي الحساب. قيم رمز التكوين تفوق القيمة الافتراضية للمتغير البيئي.
DISCORD_BOT_TOKENيُستخدم فقط للحساب الافتراضي.
موصى به: إعداد مساحة عمل للنقابة (Guild)
بمجرد أن تعمل الرسائل المباشرة، يمكنك إعداد خادم Discord الخاص بك كمساحة عمل كاملة حيث تحصل كل قناة على جلسة وكيل خاصة بها مع سياقها الخاص. هذا موصى به للخوادم الخاصة حيث يكون فقط أنت والبوت الخاص بك.
الخطوة 1: إضافة خادمك إلى قائمة السماح للنقابة
هذا يمكّن وكيلك من الرد في أي قناة على خادمك، وليس فقط الرسائل المباشرة.
“Add my Discord Server ID
<server_id>to the guild allowlist”
الخطوة 2: السماح بالردود دون ذكر @
افتراضيًا، يرد وكيلك فقط في قنوات النقابة عندما يتم ذكره بـ @. بالنسبة لخادم خاص، ربما تريد منه الرد على كل رسالة.
“Allow my agent to respond on this server without having to be @mentioned”
الخطوة 3: التخطيط للذاكرة في قنوات النقابة
افتراضيًا، الذاكرة طويلة المدى (MEMORY.md) تُحمّل فقط في جلسات الرسائل المباشرة. قنوات النقابة لا تُحمّل MEMORY.md تلقائيًا.
“When I ask questions in Discord channels, use memory_search or memory_get if you need long-term context from MEMORY.md.”
الآن أنشئ بعض القنوات على خادم Discord الخاص بك وابدأ الدردشة. يمكن لوكيلك رؤية اسم القناة، وكل قناة تحصل على جلسة معزولة خاصة بها — لذا يمكنك إعداد #coding، #home، #research، أو أي ما يناسب سير عملك.
نموذج وقت التشغيل
- البوابة تمتلك اتصال Discord.
- توجيه الرد حتمي: الردود الواردة من Discord تُعاد إلى Discord.
- افتراضيًا (
session.dmScope=main)، الدردشات المباشرة تشارك الجلسة الرئيسية للوكيل (agent:main:main). - قنوات النقابة هي مفاتيح جلسات معزولة (
agent:<agentId>:discord:channel:<channelId>). - الرسائل المباشرة الجماعية يتم تجاهلها افتراضيًا (
channels.discord.dm.groupEnabled=false). - الأوامر المائلة (Slash) الأصلية تعمل في جلسات أوامر معزولة (
agent:<agentId>:discord:slash:<userId>)، بينما لا تزال تحملCommandTargetSessionKeyإلى جلسة المحادثة الموجهة.
قنوات المنتدى
قنوات منتدى ووسائط Discord تقبل فقط مشاركات المواضيع (Threads). يدعم OpenClaw طريقتين لإنشائها:
- أرسل رسالة إلى المنتدى الأصلي (
channel:<forumId>) لإنشاء موضوع تلقائيًا. عنوان الموضوع يستخدم أول سطر غير فارغ من رسالتك. - استخدم
openclaw message thread createلإنشاء موضوع مباشرة. لا تمرر--message-idلقنوات المنتدى.
مثال: أرسل إلى المنتدى الأصلي لإنشاء موضوع
openclaw message send --channel discord --target channel:<forumId> \
--message "Topic title\nBody of the post"
مثال: إنشاء موضوع منتدى صراحةً
openclaw message thread create --channel discord --target channel:<forumId> \
--thread-name "Topic title" --message "Body of the post"
المنتديات الأصلية لا تقبل مكونات Discord. إذا كنت بحاجة إلى مكونات، أرسل إلى الموضوع نفسه (channel:<threadId>).
المكونات التفاعلية
يدعم OpenClaw حاويات مكونات Discord الإصدار 2 لرسائل الوكيل. استخدم أداة الرسالة مع حمولة components. يتم توجيه نتائج التفاعل مرة أخرى إلى الوكيل كرسائل واردة عادية وتتبع إعدادات Discord الحالية replyToMode. الكتل المدعومة:
text,section,separator,actions,media-gallery,file- صفوف الإجراءات تسمح بما يصل إلى 5 أزرار أو قائمة اختيار واحدة
- أنواع الاختيار:
string,user,role,mentionable,channel
افتراضيًا، المكونات للاستخدام لمرة واحدة. عيّن components.reusable=true للسماح للأزرار والقوائم والنماذج بالاستخدام عدة مرات حتى تنتهي صلاحيتها. لتقييد من يمكنه النقر على زر، عيّن allowedUsers على ذلك الزر (معرفات مستخدم Discord، أو علامات، أو *). عند التكوين، يتلقى المستخدمون غير المطابقين رفضًا مؤقتًا. تفتح الأوامر المائلة /model و /models منتقي نماذج تفاعلي مع قوائم منسدلة للمزود والنموذج بالإضافة إلى خطوة Submit. رد المنتقي مؤقت ولا يمكن استخدامه إلا من قبل المستخدم الذي استدعاه. مرفقات الملفات:
- كتل
fileيجب أن تشير إلى مرجع مرفق (attachment://<filename>) - قدّم المرفق عبر
media/path/filePath(ملف واحد)؛ استخدمmedia-galleryلملفات متعددة - استخدم
filenameلتجاوز اسم التحميل عندما يجب أن يطابق مرجع المرفق
النماذج المنبثقة (Modal forms):
- أضف
components.modalمع ما يصل إلى 5 حقول - أنواع الحقول:
text,checkbox,radio,select,role-select,user-select - يضيف OpenClaw زر التشغيل تلقائيًا
مثال:
{
channel: "discord",
action: "send",
to: "channel:123456789012345678",
message: "Optional fallback text",
components: {
reusable: true,
text: "Choose a path",
blocks: [
{
type: "actions",
buttons: [
{
label: "Approve",
style: "success",
allowedUsers: ["123456789012345678"],
},
{ label: "Decline", style: "danger" },
],
},
{
type: "actions",
select: {
type: "string",
placeholder: "Pick an option",
options: [
{ label: "Option A", value: "a" },
{ label: "Option B", value: "b" },
],
},
},
],
modal: {
title: "Details",
triggerLabel: "Open form",
fields: [
{ type: "text", label: "Requester" },
{
type: "select",
label: "Priority",
options: [
{ label: "Low", value: "low" },
{ label: "High", value: "high" },
],
},
],
},
},
}
التحكم في الوصول والتوجيه
channels.discord.dmPolicy تتحكم في الوصول للرسائل المباشرة (قديم: channels.discord.dm.policy):
pairing(افتراضي)allowlistopen(يتطلب تضمين"*"فيchannels.discord.allowFrom؛ قديم:channels.discord.dm.allowFrom)disabled
إذا لم تكن سياسة الرسائل المباشرة مفتوحة، يتم حظر المستخدمين غير المعروفين (أو مطالبتهم بالإقران في وضع pairing). أولوية الحسابات المتعددة:
channels.discord.accounts.default.allowFromتُطبق فقط على الحسابdefault.- الحسابات المسماة ترث
channels.discord.allowFromعندما يكونallowFromالخاص بها غير مضبوط. - الحسابات المسماة لا ترث
channels.discord.accounts.default.allowFrom.
تنسيق هدف الرسائل المباشرة للتسليم:
user:<id>- ذكر
<@id>
معرفات رقمية مجردة غامضة ويتم رفضها ما لم يتم تقديم نوع هدف صريح للمستخدم/القناة.
توجيه الوكيل بناءً على الصلاحية
استخدم bindings[].match.roles لتوجيه أعضاء نقابة Discord إلى وكلاء مختلفين حسب معرف الصلاحية. الربط بناءً على الصلاحية يقبل معرفات الصلاحية فقط ويتم تقييمه بعد ربط الأقران أو الأقران-الأبوين وقبل الربط المقتصر على النقابة. إذا حدد الربط أيضًا حقول مطابقة أخرى (على سبيل المثال peer + guildId + roles)، يجب أن تتطابق جميع الحقول المُكونة.
{
bindings: [
{
agentId: "opus",
match: {
channel: "discord",
guildId: "123456789012345678",
roles: ["111111111111111111"],
},
},
{
agentId: "sonnet",
match: {
channel: "discord",
guildId: "123456789012345678",
},
},
],
}
إعداد بوابة المطور
الأوامر الأصلية ومصادقة الأوامر
commands.nativeافتراضيًا"auto"ومُمكّن لـ Discord.- تجاوز لكل قناة:
channels.discord.commands.native. commands.native=falseتمسح صراحةً أوامر Discord الأصلية المسجلة مسبقًا.- مصادقة الأمر الأصلي تستخدم نفس قوائم السماح/السياسات في Discord مثل معالجة الرسائل العادية.
- قد تظل الأوامر مرئية في واجهة مستخدم Discord للمستخدمين غير المصرح لهم؛ التنفيذ لا يزال يفرض مصادقة OpenClaw ويعيد "غير مصرح".
راجع الأوامر المائلة (Slash commands) لفهرس الأوامر وسلوكها. إعدادات الأمر المائل الافتراضية:
ephemeral: true
تفاصيل الميزات
أدوات وبوابات الإجراء
الأمان والعمليات
- عامل التكامل كمفاتيح سرية (
DISCORD_BOT_TOKENالمفضل في البيئات الخاضعة للإشراف). - امنح أقل امتيازات Discord.
- إذا كان نشر الأمر/الحالة قديماً، أعد تشغيل البوابة وتحقق مرة أخرى باستخدام
openclaw channels status --probe.