slick react¶
Add, remove, or list emoji reactions on a known message. Requires
reactions:write for mutating commands and reactions:read for list.
react add / react remove¶
Add or remove one reaction:
Apply or remove several emoji in order, left-to-right:
Flags¶
Flags
| Flag | Value | Description |
|---|---|---|
-c, --channel |
<CHANNEL> |
Channel ID, name, or alias |
-t, --timestamp |
<TS> |
Message timestamp |
-e, --emoji |
<NAME>… |
Emoji name; repeat or comma-separate to apply multiple in order |
-n, --dry-run |
Preview without mutating |
Emoji names accept both thumbsup and :thumbsup: forms.
Ordered multi-emoji
Ordered multi-emoji halts on the first failure; data.mutations[] is
absent on the error envelope, so retry the remaining emojis from a
known-good state rather than assuming partial success.
Output¶
Human (real, single emoji — no dry_run field):
Human (--dry-run, single emoji):
Human (real, multiple emoji — one event line per emoji, in argument order):
Reaction added channel=C7N2Q8L4P ts=1746284582.123456 emoji=rocket
Reaction added channel=C7N2Q8L4P ts=1746284582.123456 emoji=white_check_mark
Human (react remove):
meta.command (react.add vs react.remove) distinguishes the two paths.
The removed action-result bool was dropped in v0.4.0; the action label and
errors[] carry the same signal.
react list¶
Flags¶
Flags
| Flag | Value | Description |
|---|---|---|
-c, --channel |
<CHANNEL> |
Channel ID, name, or alias |
-t, --timestamp |
<TS> |
Message timestamp |
Output¶
Human mode renders a primer table:
JSON envelope. The Slack API normalises some emoji aliases to their
canonical names in the response (e.g. thumbsup → +1, thumbsdown → -1);
the name field reflects the canonical Slack form, not necessarily the alias
you passed to react add:
Common errors¶
| Error | Cause | Fix |
|---|---|---|
invalid_name: Slack does not recognize that emoji name (validation, exit 4) |
The emoji name is not a custom workspace emoji and not a recognised Slack default. | Check spelling; try with/without colons; verify in the Slack composer. |
already_reacted (validation, exit 4) |
This emoji is already on the message from the same user. | Skip; treat as idempotent success at the caller. |
no_reaction (not_found, exit 2) |
react remove cannot find that emoji on the message. |
Confirm with react list before removing. |
too_many_reactions (validation, exit 4) |
Slack message reaction limit reached. | Cannot work around; surface to user. |
not_in_channel (not_found, exit 2) |
App/user is not a member of the target channel. | Add the bot, or use a user-token profile. |
See also¶
message— send the message before reacting to it.history— look up the timestamp.- Slack API methods:
reactions.add,reactions.remove,reactions.get.