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