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 نیاز دارد) - وقتی
--channelیا یک مقصد با پیشوند کانال وجود داشته باشد،openclaw messageکانال انتخابشده را به Plugin مالک آن نگاشت میکند؛ در غیر این صورت، Pluginهای کانال پیکربندیشده را برای استنباط کانال پیشفرض بارگذاری میکند.
قالبهای مقصد (--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>(کانال یا کاربر مقصد برای send/poll/read/غیره)--targets <name>(تکرارشونده؛ فقط broadcast)--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اختیاری؛ برای پاککردن timeout هر دو را حذف کنید)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، props در Mattermost، یا کارتهای Teams/Feishu رندر میکند. برای قرارداد کامل و قواعد fallback، ارائهٔ پیام را ببینید.
ارسال یک بار ارائهٔ غنیتر:
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