CLI commands
رسالة
openclaw message
أمر صادر واحد لإرسال الرسائل وإجراءات القنوات (Discord/Google Chat/iMessage/Matrix/Mattermost (Plugin)/Microsoft Teams/Signal/Slack/Telegram/WhatsApp).
الاستخدام
openclaw message <subcommand> [flags]اختيار القناة:
- يكون
--channelمطلوبًا إذا تم تكوين أكثر من قناة واحدة. - إذا تم تكوين قناة واحدة فقط، تصبح هي الافتراضية.
- القيم:
discord|googlechat|imessage|matrix|mattermost|msteams|signal|slack|telegram|whatsapp(يتطلب Mattermost Plugin) - يحل
openclaw messageالقناة المحددة إلى Plugin المالكة لها عند وجود--channelأو هدف مسبوق بالقناة؛ وإلا فإنه يحمل Plugins القنوات المكوّنة لاستنتاج القناة الافتراضية.
تنسيقات الهدف (--target):
- WhatsApp: E.164، أو JID مجموعة، أو JID قناة/نشرة WhatsApp (
...@newsletter) - Telegram: معرف الدردشة، أو
@username، أو هدف موضوع منتدى (-1001234567890:topic:42، أو--thread-id 42) - Discord:
channel:<id>أوuser:<id>(أو إشارة<@id>؛ تُعامل المعرفات الرقمية الخام كقنوات) - Google Chat:
spaces/<spaceId>أوusers/<userId> - Slack:
channel:<id>أوuser:<id>(يُقبل معرف القناة الخام) - Mattermost (Plugin):
channel:<id>، أوuser:<id>، أو@username(تُعامل المعرفات المجردة كقنوات) - Signal:
+E.164، أوgroup:<id>، أوsignal:+E.164، أوsignal:group:<id>، أوusername:<name>/u:<name> - iMessage: المعرّف، أو
chat_id:<id>، أوchat_guid:<guid>، أوchat_identifier:<id> - Matrix:
@user:server، أو!room:server، أو#alias:server - Microsoft Teams: معرف المحادثة (
19:[email protected]) أوconversation:<id>أوuser:<aad-object-id>
البحث عن الأسماء:
- بالنسبة إلى المزودين المدعومين (Discord/Slack/إلخ)، تُحل أسماء القنوات مثل
Helpأو#helpعبر ذاكرة التخزين المؤقت للدليل. - عند عدم العثور في ذاكرة التخزين المؤقت، سيحاول OpenClaw إجراء بحث مباشر في الدليل عندما يدعم المزود ذلك.
الأعلام الشائعة
--channel <name>--account <id>--target <dest>(القناة أو المستخدم الهدف للإرسال/الاستقصاء/القراءة/إلخ)--targets <name>(كرر؛ للبث فقط)--json--dry-run--verbose
سلوك SecretRef
- يحل
openclaw messageمراجع SecretRef للقنوات المدعومة قبل تشغيل الإجراء المحدد. - يقتصر الحل على هدف الإجراء النشط عندما يكون ذلك ممكنًا:
- على نطاق القناة عند تعيين
--channel(أو استنتاجه من الأهداف ذات البادئة مثلdiscord:...) - على نطاق الحساب عند تعيين
--account(عموميات القناة + أسطح الحساب المحدد) - عند حذف
--account، لا يفرض OpenClaw نطاق SecretRef لحسابdefault
- على نطاق القناة عند تعيين
- لا تمنع مراجع SecretRef غير المحلولة في القنوات غير ذات الصلة إجراء رسالة موجّهًا.
- إذا كان SecretRef للقناة/الحساب المحدد غير محلول، يفشل الأمر مغلقًا لذلك الإجراء.
الإجراءات
الأساس
-
send- القنوات: WhatsApp/Telegram/Discord/Google Chat/Slack/Mattermost (Plugin)/Signal/iMessage/Matrix/Microsoft Teams
- المطلوب:
--target، بالإضافة إلى--messageأو--mediaأو--presentation - اختياري:
--media،--presentation،--delivery،--pin،--reply-to،--thread-id،--gif-playback،--force-document،--silent - حمولات العرض التقديمي المشتركة: يرسل
--presentationكتلًا دلالية (text،context،divider،buttons،select) يعرضها الأساس عبر القدرات المعلنة للقناة المحددة. راجع عرض الرسائل. - تفضيلات التسليم العامة: يقبل
--deliveryتلميحات تسليم مثل{ "pin": true }؛ و--pinاختصار للتسليم المثبت عندما تدعمه القناة. - Telegram فقط:
--force-document(إرسال الصور وملفات GIF ومقاطع الفيديو كمستندات لتجنب ضغط Telegram) - Telegram فقط:
--thread-id(معرف موضوع المنتدى) - Slack فقط:
--thread-id(طابع وقت السلسلة؛ يستخدم--reply-toالحقل نفسه) - Telegram + Discord:
--silent - WhatsApp فقط:
--gif-playback؛ تُعنون قنوات/نشرات WhatsApp باستخدام JID الأصلي الخاص بها@newsletter.
-
poll- القنوات: WhatsApp/Telegram/Discord/Matrix/Microsoft Teams
- المطلوب:
--target،--poll-question،--poll-option(كرر) - اختياري:
--poll-multi - Discord فقط:
--poll-duration-hours،--silent،--message - Telegram فقط:
--poll-duration-seconds(5-600)،--silent،--poll-anonymous/--poll-public،--thread-id
-
react- القنوات: Discord/Google Chat/Slack/Telegram/WhatsApp/Signal/Matrix
- المطلوب:
--message-id،--target - اختياري:
--emoji،--remove،--participant،--from-me،--target-author،--target-author-uuid - ملاحظة: يتطلب
--removeوجود--emoji(احذف--emojiلمسح تفاعلاتك حيث يكون ذلك مدعومًا؛ راجع /tools/reactions) - WhatsApp فقط:
--participant،--from-me - تفاعلات مجموعات Signal: يلزم
--target-authorأو--target-author-uuid
-
reactions- القنوات: Discord/Google Chat/Slack/Matrix
- المطلوب:
--message-id،--target - اختياري:
--limit
-
read- القنوات: Discord/Slack/Matrix
- المطلوب:
--target - اختياري:
--limit،--message-id،--before،--after - Slack فقط: يقرأ
--message-idطابع وقت رسالة Slack محددة؛ ادمجه مع--thread-idلقراءة رد سلسلة بعينه. - Discord فقط:
--around
-
edit- القنوات: Discord/Slack/Matrix
- المطلوب:
--message-id،--message،--target
-
delete- القنوات: Discord/Slack/Telegram/Matrix
- المطلوب:
--message-id،--target
-
pin/unpin- القنوات: Discord/Slack/Matrix
- المطلوب:
--message-id،--target
-
pins(قائمة)- القنوات: Discord/Slack/Matrix
- المطلوب:
--target
-
permissions- القنوات: Discord/Matrix
- المطلوب:
--target - Matrix فقط: متاح عند تمكين تشفير Matrix والسماح بإجراءات التحقق
-
search- القنوات: Discord
- المطلوب:
--guild-id،--query - اختياري:
--channel-id،--channel-ids(كرر)،--author-id،--author-ids(كرر)،--limit
السلاسل
-
thread create- القنوات: Discord
- المطلوب:
--thread-name،--target(معرف القناة) - اختياري:
--message-id،--message،--auto-archive-min
-
thread list- القنوات: Discord
- المطلوب:
--guild-id - اختياري:
--channel-id،--include-archived،--before،--limit
-
thread reply- القنوات: Discord
- المطلوب:
--target(معرف السلسلة)،--message - اختياري:
--media،--reply-to
الرموز التعبيرية
-
emoji list- Discord:
--guild-id - Slack: لا توجد أعلام إضافية
- Discord:
-
emoji upload- القنوات: Discord
- المطلوب:
--guild-id،--emoji-name،--media - اختياري:
--role-ids(كرر)
الملصقات
-
sticker send- القنوات: Discord
- المطلوب:
--target،--sticker-id(كرر) - اختياري:
--message
-
sticker upload- القنوات: Discord
- المطلوب:
--guild-id،--sticker-name،--sticker-desc،--sticker-tags،--media
الأدوار / القنوات / الأعضاء / الصوت
role info(Discord):--guild-idrole add/role remove(Discord):--guild-id،--user-id،--role-idchannel info(Discord):--targetchannel list(Discord):--guild-idmember info(Discord/Slack):--user-id(+--guild-idلـ Discord)voice status(Discord):--guild-id،--user-id
الأحداث
event list(Discord):--guild-idevent create(Discord):--guild-id،--event-name،--start-time- اختياري:
--end-time،--desc،--channel-id،--location،--event-type
- اختياري:
الإشراف (Discord)
timeout:--guild-id،--user-id(اختياريًا--duration-minأو--until؛ احذف كليهما لمسح المهلة)kick:--guild-id،--user-id(+--reason)ban:--guild-id،--user-id(+--delete-days،--reason)- يدعم
timeoutأيضًا--reason
- يدعم
البث
broadcast- القنوات: أي قناة مكوّنة؛ استخدم
--channel allلاستهداف جميع المزودين - المطلوب:
--targets <target...> - اختياري:
--message،--media،--dry-run
- القنوات: أي قناة مكوّنة؛ استخدم
أمثلة
إرسال رد في Discord:
openclaw message send --channel discord \ --target channel:123 --message "hi" --reply-to 456إرسال رسالة بأزرار دلالية:
openclaw message send --channel discord \ --target channel:123 --message "Choose:" \ --presentation '{"blocks":[{"type":"buttons","buttons":[{"label":"Approve","value":"approve","style":"success"},{"label":"Decline","value":"decline","style":"danger"}]}]}'يعرض الأساس حمولة presentation نفسها إلى مكونات Discord، أو كتل Slack، أو أزرار Telegram المضمنة، أو خصائص Mattermost، أو بطاقات Teams/Feishu وفقًا لقدرة القناة. راجع عرض الرسائل للعقد الكامل وقواعد الرجوع الاحتياطي.
إرسال حمولة عرض تقديمي أكثر ثراءً:
openclaw message send --channel googlechat --target spaces/AAA... \ --message "Choose:" \ --presentation '{"title":"Deploy approval","tone":"warning","blocks":[{"type":"text","text":"Choose a path"},{"type":"buttons","buttons":[{"label":"Approve","value":"approve"},{"label":"Decline","value":"decline"}]}]}'إنشاء استطلاع Discord:
openclaw message poll --channel discord \ --target channel:123 \ --poll-question "Snack?" \ --poll-option Pizza --poll-option Sushi \ --poll-multi --poll-duration-hours 48إنشاء استطلاع Telegram (إغلاق تلقائي خلال دقيقتين):
openclaw message poll --channel telegram \ --target @mychat \ --poll-question "Lunch?" \ --poll-option Pizza --poll-option Sushi \ --poll-duration-seconds 120 --silentإرسال رسالة استباقية في Teams:
openclaw message send --channel msteams \ --target conversation:19:[email protected] --message "hi"إنشاء استطلاع Teams:
openclaw message poll --channel msteams \ --target conversation:19:[email protected] \ --poll-question "Lunch?" \ --poll-option Pizza --poll-option Sushiالتفاعل في Slack:
openclaw message react --channel slack \ --target C123 --message-id 456 --emoji "✅"التفاعل في مجموعة Signal:
openclaw message react --channel signal \ --target signal:group:abc123 --message-id 1737630212345 \ --emoji "✅" --target-author-uuid 123e4567-e89b-12d3-a456-426614174000إرسال أزرار Telegram مضمنة عبر العرض التقديمي العام:
openclaw message send --channel telegram --target @mychat --message "Choose:" \ --presentation '{"blocks":[{"type":"buttons","buttons":[{"label":"Yes","value":"cmd:yes"},{"label":"No","value":"cmd:no"}]}]}'إرسال بطاقة Teams عبر العرض التقديمي العام:
openclaw message send --channel msteams \ --target conversation:19:[email protected] \ --presentation '{"title":"Status update","blocks":[{"type":"text","text":"Build completed"}]}'إرسال صورة Telegram كمستند لتجنب الضغط:
openclaw message send --channel telegram --target @mychat \ --media ./diagram.png --force-document