一键导入
cord
// Send messages, embeds, files, and interactive buttons to Discord via the Cord CLI. Use for notifications, reports, interactive choices, and dynamic Discord interactions.
// Send messages, embeds, files, and interactive buttons to Discord via the Cord CLI. Use for notifications, reports, interactive choices, and dynamic Discord interactions.
| name | cord |
| description | Send messages, embeds, files, and interactive buttons to Discord via the Cord CLI. Use for notifications, reports, interactive choices, and dynamic Discord interactions. |
| triggers | ["send to discord","post to discord","discord message","notify discord"] |
Interact with Discord through Cord's CLI commands. This skill teaches Claude Code how to send messages, embeds, files, and interactive buttons.
GitHub: https://github.com/alexknowshtml/cord
Ensure Cord is running:
cord start
Verify it's connected:
curl -s http://localhost:2643/health
# {"status":"ok","connected":true,"user":"MyBot#1234"}
Send a text message to a channel or thread.
cord send <channel> "message"
Example:
cord send 123456789 "Hello world!"
Send a formatted embed card with optional styling.
cord embed <channel> "description" [options]
Options:
| Flag | Description |
|---|---|
--title "..." | Embed title |
--url "..." | Title link URL |
--color <name|hex> | red, green, blue, yellow, purple, orange, or 0xHEX |
--author "..." | Author name |
--author-url "..." | Author link |
--author-icon "..." | Author icon URL |
--thumbnail "..." | Small image (top right) |
--image "..." | Large image (bottom) |
--footer "..." | Footer text |
--footer-icon "..." | Footer icon URL |
--timestamp | Add current timestamp |
--field "Name:Value" | Add field (append :inline for inline) |
Examples:
Simple embed:
cord embed 123456789 "Daily status update" --title "Status Report" --color green
Embed with fields:
cord embed 123456789 "Build completed successfully" \
--title "CI/CD Pipeline" \
--color green \
--field "Branch:main:inline" \
--field "Duration:2m 34s:inline" \
--field "Tests:142 passed" \
--footer "Deployed by Cord" \
--timestamp
Send a file attachment.
cord file <channel> <filepath> ["message"]
Examples:
cord file 123456789 ./report.md "Here's the weekly report"
cord file 123456789 ./logs.txt
Send interactive buttons with optional handlers.
cord buttons <channel> "prompt" --button label="..." id="..." [options]
Button options:
| Option | Description |
|---|---|
label="..." | Button text (required) |
id="..." | Custom ID for tracking (required) |
style="..." | primary, secondary, success, danger |
reply="..." | Ephemeral reply when clicked |
webhook="..." | URL to POST click data to |
Examples:
Simple confirmation:
cord buttons 123456789 "Deploy to production?" \
--button label="Deploy" id="deploy-prod" style="success" \
--button label="Cancel" id="cancel-deploy" style="secondary"
With inline responses:
cord buttons 123456789 "Approve this PR?" \
--button label="Approve" id="approve" style="success" reply="Approved! Merging now." \
--button label="Reject" id="reject" style="danger" reply="Rejected. Please revise."
With webhook callback:
cord buttons 123456789 "Start backup?" \
--button label="Start Backup" id="backup-start" style="primary" webhook="http://localhost:8080/backup"
Show typing indicator (useful before slow operations).
cord typing <channel>
Edit an existing message.
cord edit <channel> <messageId> "new content"
Delete a message.
cord delete <channel> <messageId>
Rename a thread.
cord rename <threadId> "new name"
Reply to a specific message (shows reply preview).
cord reply <channel> <messageId> "message"
Create a thread from a message.
cord thread <channel> <messageId> "thread name"
Add a reaction to a message.
cord react <channel> <messageId> "emoji"
Example:
cord react 123456789 987654321 "👍"
Update a message with a status indicator. Use this to show work progress on a thread starter or status message.
cord state <channel> <messageId> <state>
Preset states:
| State | Display |
|---|---|
processing | 🤖 Processing... |
thinking | 🧠 Thinking... |
searching | 🔍 Searching... |
writing | ✍️ Writing... |
done | ✅ Done |
error | ❌ Something went wrong |
waiting | ⏳ Waiting for input... |
Examples:
Using presets:
cord state 123456789 987654321 processing
cord state 123456789 987654321 done
Custom status:
cord state 123456789 987654321 "🔄 Syncing database..."
| Use Case | Command |
|---|---|
| Simple notification | cord send |
| Formatted status update | cord embed |
| Long content (logs, reports) | cord file |
| User needs to make a choice | cord buttons |
| Indicate processing (typing bubble) | cord typing |
| Update thread/message status | cord state |
| Update previous message | cord edit |
| Start a focused discussion | cord thread |
| Quick acknowledgment | cord react |
# Send the notification
cord embed 123456789 "Build failed on main branch" \
--title "CI Alert" \
--color red \
--field "Error:Test suite timeout" \
--field "Commit:abc1234:inline"
# Offer actions
cord buttons 123456789 "What would you like to do?" \
--button label="View Logs" id="view-logs" style="primary" reply="Fetching logs..." \
--button label="Retry Build" id="retry" style="success" webhook="http://ci/retry" \
--button label="Ignore" id="ignore" style="secondary" reply="Acknowledged"
# Start with typing indicator
cord typing 123456789
# Send initial status message
MSGID=$(cord send 123456789 "🤖 Processing..." | grep -o '[0-9]*$')
# Update state as work progresses
cord state 123456789 $MSGID searching
cord state 123456789 $MSGID writing
cord state 123456789 $MSGID done
Or with custom progress:
cord state 123456789 $MSGID "🔄 Step 1/3: Fetching data..."
cord state 123456789 $MSGID "🔄 Step 2/3: Processing..."
cord state 123456789 $MSGID "🔄 Step 3/3: Generating report..."
cord state 123456789 $MSGID done
# Send summary embed
cord embed 123456789 "Weekly metrics compiled" \
--title "Weekly Report Ready" \
--color blue \
--field "Period:Jan 15-21:inline" \
--field "Pages:12:inline"
# Attach the full report
cord file 123456789 ./weekly-report.pdf "Full report attached"
# Ask for confirmation
cord buttons 123456789 "Delete all archived items older than 30 days?" \
--button label="Yes, Delete" id="confirm-delete" style="danger" reply="Deleting..." \
--button label="Cancel" id="cancel-delete" style="secondary" reply="Cancelled"
When a user adds a ✅ reaction to the last message in a thread, Cord automatically:
This provides a quick way for users to signal "conversation complete" without explicit commands.
For advanced use cases (webhooks, external scripts), see HTTP-API.md.