Use the message tool with these actions to control Slack: send, react, reactions, read, edit, delete, download-file, pin, unpin, list-pins, member-info, emoji-list. The tool uses the bot token configured for OpenClaw.
channelId (e.g. C123) and messageId (Slack message timestamp, e.g. 1712023032.1234).emoji (Unicode or :name:).to target ( channel:<id> like C123 or user mention <@U123>).Message context lines include slack message id and channel fields you can reuse directly.
Action groupDefaultNotesreactionsenabledReact + list reactionsmessagesenabledRead/send/edit/deletepinsenabledPin/unpin/listmemberInfoenabledMember infoemojiListenabledCustom emoji list
bash
/message
action: send
channel: slack
to: C123
message: Hello @everyone!
bash
/message
action: send
channel: slack
to: <@U123>
message: Hi there!
bash
/message
action: react
channelId: C123
messageId: 1712023032.1234
emoji: ✅
bash
/message
action: reactions
channelId: C123
messageId: 1712023032.1234
bash
/message
action: edit
channelId: C123
messageId: 1712023032.1234
message: Updated text
bash
/message
action: delete
channelId: C123
messageId: 1712023032.1234
bash
/message
action: read
channelId: C123
limit: 20
bash
/message
action: pin
channelId: C123
messageId: 1712023032.1234
bash
/message
action: unpin
channelId: C123
messageId: 1712023032.1234
bash
/message
action: list-pins
channelId: C123
bash
/message
action: member-info
userId: U123
Returns: real_name, display_name, email, avatar URLs, timezone, profile status, etc.
bash
/message
action: emoji-list
<@U...> instead of @Name to ensure Slack parses the mention correctly.member-info once you have any guessable ID.im:write scope and may need explicit pairing if your channel config is restrictive.<@UserID> to trigger notifications.read calls.