← Back to Skills Marketplace
muselinn

Discord Interactive

by Linn · GitHub ↗ · v1.1.1 · MIT-0
cross-platform ✓ Security Clean
347
Downloads
1
Stars
2
Active Installs
3
Versions
Install in OpenClaw
/install discord-interactive
Description
Send Discord Components v2 interactive messages (buttons, selects, modals, rich layouts) via the message tool.
README (SKILL.md)

Discord Interactive Components (Components v2)

Send rich, interactive messages in Discord using the message tool's components parameter. This replaces plain text with buttons, select menus, modals, and structured layouts.

When to Use Components v2

ALWAYS prefer components over plain text when:

  • You need user confirmation → buttons (Yes/No, Approve/Reject)
  • You need user selection → select menus (agents, priorities, options)
  • You want structured information display → text blocks + sections + separators
  • You want to collect form data → modals with text inputs, selects, checkboxes
  • You want visual distinction → accent-colored containers

Use plain text when:

  • Simple conversational response, no actions needed
  • Quick one-liner answer

Quick Reference

The components parameter is an object with this structure:

{
  // Top-level fields
  text: "Optional top-level text (rendered as first TextDisplay)",
  reusable: true,  // Keep buttons/selects active for multiple clicks (default: single-use)
  container: {
    accentColor: "#3498db",  // Left border color (hex string or number)
    spoiler: false
  },
  // Content blocks (rendered in order inside the container)
  blocks: [
    { type: "text", text: "Markdown text block" },
    { type: "section", text: "Main text", accessory: { type: "thumbnail", url: "https://..." } },
    { type: "separator", spacing: "small", divider: true },
    { type: "actions", buttons: [{ label: "Click me", style: "success" }] },
    { type: "actions", select: { type: "string", placeholder: "Choose...", options: [...] } },
    { type: "media-gallery", items: [{ url: "https://...", description: "..." }] },
    { type: "file", file: "attachment://report.pdf" }
  ],
  // Optional modal form (auto-generates a trigger button)
  modal: {
    title: "Form Title",
    triggerLabel: "Open Form",
    fields: [{ type: "text", label: "Your name" }]
  }
}

Quick Start — Confirmation

// message tool call
{
  action: "send",
  channel: "discord",
  target: "channel:CHANNEL_ID",
  components: {
    text: "**Confirm action?**",
    reusable: false,
    container: { accentColor: "#3498db" },
    blocks: [
      {
        type: "actions",
        buttons: [
          { label: "Yes", style: "success" },
          { label: "No", style: "secondary" }
        ]
      }
    ]
  }
}

No custom_id needed — OpenClaw generates unique IDs automatically. When the user clicks, you receive a message like Clicked "Yes".

Key Differences from Raw Discord API

What you might expect What OpenClaw actually uses
type: "container" wrapper container: { accentColor: "..." } config object
type: "text_display" type: "text" in blocks
type: "action_row" with nested components type: "actions" with buttons or select
Manual custom_id on buttons Auto-generated — just set label and style
accent_color: 0x3498db accentColor: "#3498db" (hex string preferred)
type: "string_select" select: { type: "string", ... } inside actions block

Block Types Summary

Block Type Purpose See
text Markdown text components.md
section Text + optional thumbnail/button components.md
separator Divider line components.md
actions Buttons or select menu components.md
media-gallery Image gallery components.md
file File attachment components.md

Handling Interactions

When a user clicks a button or selects an option, OpenClaw delivers it as a normal inbound message:

  • Button click → Clicked "Yes".
  • Select → Selected option_a from "Pick an option".

No special callback handling needed — just read the incoming message text. See handling.md for patterns.

Important Rules

  • No custom_id — OpenClaw auto-generates unique IDs for all interactive elements
  • No embeds — Components v2 and embeds cannot coexist in the same message
  • reusable: true — Set this to allow buttons/selects to be clicked multiple times
  • allowedUsers — Optionally restrict who can click a button (array of Discord user IDs)
  • Actions block — Must have EITHER buttons OR select, never both
  • Max 5 buttons per actions block, max 1 select per actions block

Examples

See references/examples.md for complete scenarios:

  • Yes/No confirmation
  • Agent/option selection
  • Status card with actions
  • Modal form collection
  • Multi-step workflow
Usage Guidance
This skill is coherent and focuses only on building and handling Discord interactive messages. Before installing: (1) confirm you trust agents that will use this skill because examples show workflows where a button click leads the agent to perform actions (including destructive ones); enforce safeguards/confirmation for destructive operations, (2) restrict interactive buttons using allowedUsers where appropriate, (3) treat modal-submitted form data as potentially sensitive and validate/sanitize it before using, and (4) test these components in a non-production channel to verify behavior and avoid accidental actions.
Capability Analysis
Type: OpenClaw Skill Name: discord-interactive Version: 1.1.1 The discord-interactive skill bundle is a documentation-only package providing instructions and examples for using Discord interactive components (buttons, selects, modals) via the message tool. It contains no executable code, scripts, or data exfiltration logic. The instructions in SKILL.md and the reference files (components.md, examples.md, handling.md) are strictly focused on enhancing the agent's UI/UX capabilities within Discord and do not contain any malicious prompt injections or unauthorized access attempts.
Capability Assessment
Purpose & Capability
Name/description (Discord interactive components) match the SKILL.md and reference files. There are no unrelated environment variables, binaries, or install steps requested that would be disproportionate to sending interactive Discord messages.
Instruction Scope
The instructions are scoped to constructing component payloads, sending/editing messages via the message tool, and handling the resulting inbound interaction text. There are no instructions to read arbitrary system files, environment variables, or to transmit data to unexpected endpoints. Note: examples show using components to confirm destructive actions (e.g., deleting files) — that is a valid usage pattern but requires cautious agent policies.
Install Mechanism
No install spec and no code files — instruction-only skill. This minimizes write-to-disk and supply-chain risk.
Credentials
Skill declares no required environment variables, credentials, or config paths. The examples reference Discord IDs, URLs, and attachment:// filenames only, which are appropriate for the stated functionality.
Persistence & Privilege
Skill does not request always:true or other elevated persistence. It is user-invocable and allows normal autonomous invocation (platform default); nothing here indicates it would modify other skills or system-wide settings.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install discord-interactive
  3. After installation, invoke the skill by name or use /discord-interactive
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.1.1
**Major update: Improved structure and expanded support for Discord interactive messages.** - Added versioning and clearer metadata in SKILL.md. - Overhauled documentation to clarify new v2 components syntax (blocks, containers, modal forms). - Components now support modals, structured layouts, rich status cards, and file/media attachments. - Custom IDs are now auto-generated, simplifying button/select creation. - Expanded usage examples and best practices for confirmation, selection, and data collection. - Updated interaction handling: clicks and selections now delivered as plain text messages.
v1.1.0
Refactored with skill-creator best practices: progressive disclosure, separated references, added comprehensive examples
v1.0.0
Initial release: Interactive buttons and select menus for Discord
Metadata
Slug discord-interactive
Version 1.1.1
License MIT-0
All-time Installs 2
Active Installs 2
Total Versions 3
Frequently Asked Questions

What is Discord Interactive?

Send Discord Components v2 interactive messages (buttons, selects, modals, rich layouts) via the message tool. It is an AI Agent Skill for Claude Code / OpenClaw, with 347 downloads so far.

How do I install Discord Interactive?

Run "/install discord-interactive" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Discord Interactive free?

Yes, Discord Interactive is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Discord Interactive support?

Discord Interactive is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Discord Interactive?

It is built and maintained by Linn (@muselinn); the current version is v1.1.1.

💬 Comments