Reusable Discord Buttons and User-Restricted Components in OpenClaw 2026.2.17
If you've built interactive Discord bots with OpenClaw, you've probably hit this frustration: buttons and selects expire after a single use. Your agent presents a nice menu, someone clicks an option, and then... the component is dead. Anyone else who tries to interact gets nothing.
OpenClaw 2026.2.17 fixes this with two new Discord component features that make agent interactions much more flexible.
Reusable Components: Click More Than Once
The new components.reusable=true flag lets buttons, selects, and forms be used multiple times before expiring. This is huge for common patterns like:
- Persistent action menus โ A "Quick Actions" panel that stays active
- Polls and voting โ Multiple users can interact with the same buttons
- Dashboard controls โ Toggle settings without re-sending the message
- Game interfaces โ Turn-based interactions where multiple clicks are expected
How to Use It
When your agent sends Discord components, add the reusable flag:
components:
reusable: true
buttons:
- label: "Option A"
action: "select_a"
- label: "Option B"
action: "select_b"Without this flag, components behave as before โ single-use and then disabled.
Per-Button User Restrictions
The second feature is allowedUsers โ a per-button allowlist that restricts who can click specific buttons. This solves several real problems:
- Admin-only actions โ Dangerous buttons only certain users can press
- Turn-based games โ Only the current player can act
- Approval workflows โ Only designated approvers see working buttons
- User-specific menus โ Personalized actions that only apply to one person
Example: Mixed Permission Buttons
components:
buttons:
- label: "View Details"
action: "view"
# Anyone can click
- label: "Delete"
action: "delete"
allowedUsers:
- "123456789012345678" # Only this user can deleteUsers not on the allowlist can see the button but clicking it does nothing (or shows an error, depending on your handler).
Combining Both Features
The real power comes from combining reusable components with user restrictions. Imagine a team dashboard:
- Everyone can click "Refresh Status" (reusable, no restrictions)
- Only team leads can click "Escalate Issue" (reusable, restricted)
- Only the original requester can click "Cancel My Request" (reusable, restricted to requester)
All of these stay active on the same message, handling multiple interactions from different users appropriately.
Why This Matters for Agent Design
These features enable much richer Discord agent experiences:
- Fewer messages โ One message with reusable buttons instead of re-sending menus
- Better UX โ Users don't see disabled buttons constantly
- Proper permissions โ No more "please don't click that" warnings
- Cleaner channels โ Less message spam from repeated prompts
Getting Started
Update to OpenClaw 2026.2.17 and check the Discord channel docs for full schema details. Thanks to @thewilloftheshadow for both contributions!
GitHub Reference: These features landed as part of the broader Discord Components v2 work โ check the v2026.2.17 release notes for the full changelog.
Comments (0)
No comments yet. Be the first to comment!