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: بدون پرچم اضافه
  • 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-id
  • role add / role remove (Discord): --guild-id، --user-id، --role-id
  • channel info (Discord): --target
  • channel list (Discord): --guild-id
  • member info (Discord/Slack): --user-id (+ --guild-id برای Discord)
  • voice status (Discord): --guild-id، --user-id

رویدادها

  • event list (Discord): --guild-id
  • event 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

مرتبط