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:...@thread.tacv2) أو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 messageSecretRefs القنوات المدعومة قبل تشغيل الإجراء المحدد. - يكون الحل مقيدًا بهدف الإجراء النشط عندما يكون ذلك ممكنًا:
- على نطاق القناة عند تعيين
--channel(أو استنتاجه من الأهداف المسبوقة مثلdiscord:...) - على نطاق الحساب عند تعيين
--account(عموميات القناة + أسطح الحساب المحدد) - عند حذف
--account، لا يفرض OpenClaw نطاق SecretRef لحسابdefault
- على نطاق القناة عند تعيين
- لا تمنع SecretRefs غير المحلولة في القنوات غير ذات الصلة إجراء رسالة موجّهة.
- إذا كان 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) يعرضها core عبر القدرات المعلنة للقناة المحددة. راجع عرض الرسائل. - تفضيلات التسليم العامة: يقبل
--deliveryتلميحات تسليم مثل{ "pin": true }؛ ويُعد--pinاختصارًا للتسليم المثبت عندما تدعمه القناة. - Telegram + WhatsApp:
--force-document(إرسال الصور وملفات GIF ومقاطع الفيديو كمستندات لتجنب ضغط القناة) - 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/Matrix/Nextcloud Talk/Signal/Slack/Telegram/WhatsApp
- مطلوب:
--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 - Nextcloud Talk: إضافة التفاعلات فقط؛ يُرفض
--removeبخطأ واضح (راجع /tools/reactions)
-
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:abc@thread.tacv2 --message "hi"أنشئ استطلاعًا في Teams:
openclaw message poll --channel msteams \ --target conversation:19:abc@thread.tacv2 \ --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"}]}]}'أرسل زر Telegram Mini App عبر العرض العام:
openclaw message send --channel telegram --target 123456789 --message "Open app:" \ --presentation '{"blocks":[{"type":"buttons","buttons":[{"label":"Launch","webApp":{"url":"https://example.com/app"}}]}]}'لا تُدعم أزرار تطبيق ويب Telegram إلا في المحادثات الخاصة بين مستخدم
والروبوت. لا تزال حمولات JSON الأقدم التي تستخدم web_app قابلة للتحليل، لكن webApp هو
حقل العرض المعتمد.
أرسل بطاقة Teams عبر العرض العام:
openclaw message send --channel msteams \ --target conversation:19:abc@thread.tacv2 \ --presentation '{"title":"Status update","blocks":[{"type":"text","text":"Build completed"}]}'أرسل صورة Telegram أو WhatsApp كمستند لتجنب الضغط:
openclaw message send --channel telegram --target @mychat \ --media ./diagram.png --force-document