Overview
The "Discord Send" node allows you to send messages, embeds, and interactive prompts (such as buttons or selects) to Discord channels directly from your n8n workflows. It supports sending plain messages, rich embeds, interactive button/select prompts, and performing certain actions like removing messages or managing user roles. This node is useful for automating notifications, collecting responses from users, moderating channels, or updating bot status/activity in Discord.
Practical examples:
- Sending automated alerts or updates to a Discord channel.
- Creating interactive polls or feedback prompts using buttons or select menus.
- Moderating channels by bulk-removing recent messages.
- Assigning or removing roles from users based on workflow logic.
- Updating the bot's activity status dynamically.
Properties
| Name | Meaning |
|---|---|
| Replace the trigger placeholder | If enabled, replaces a previous placeholder message set by this or another Discord node. |
| Send to the trigger channel | Sends the message to the same channel where the workflow was triggered. |
| Send to | Lets you specify which text channel(s) to send the message to. Options are loaded dynamically. |
| Type | Selects the type of interaction: Message, Button Prompt, Select Prompt, Action, None. |
| Action | When "Action" type is selected, choose what action to perform: Remove messages, Add role to user, Remove role from user. |
| User ID | The ID of the user to add/remove a role from (used with relevant actions). |
| Which roles | Specify one or more roles to add/remove from the user (used with relevant actions). |
| How many? | Number of last messages to remove when using the "Remove messages" action (max 150, <4 weeks old). |
| Content | The text content of the message or prompt. Required for button/select prompts. |
| Embed | Enables creation of rich embed messages. |
| Color | Sets the color of the embed sidebar. |
| Title | Title of the embed message. |
| URL | URL linked to the embed title. |
| Author name | Name displayed as the author in the embed. |
| Author icon URL or base64 | Image for the author (URL or base64). |
| Author URL | Link for the author name. |
| Description | Description text in the embed. |
| Thumbnail URL or base64 | Thumbnail image for the embed (URL or base64). |
| Fields | Add multiple fields to the embed, each with a title, value, and inline option. |
| Image URL or base64 | Main image for the embed (URL or base64). |
| Buttons | Add up to 5 interactive buttons (label, value, style) for button prompts. |
| Select | Add options for select prompts (label, description, value). |
| Persistent | Keeps button/select prompts visible after workflow completion. |
| Min select | Minimum number of options that must be selected in a persistent select prompt. |
| Max select | Maximum number of options that can be selected in a persistent select prompt. |
| Message ID | ID of the message to update (for persistent prompts); if not set, sends as new. |
| Footer text | Text shown in the embed footer. |
| Footer icon URL or base64 | Icon for the embed footer (URL or base64). |
| Displayed date | Date/time to display in the embed. |
| Timeout | Time (seconds) to wait for a response to button/select prompts; 0 means wait indefinitely. |
| Restrict to triggering user | Only the user who triggered the workflow can interact with the prompt. |
| Restrict to mentioned roles | Only users with specified roles can interact with the prompt. |
| Files | Attach up to 5 images to the message (URL or base64). |
| Mention roles | Roles to mention in the message. |
| Placeholder | Placeholder message shown while waiting for a prompt response. |
| Bot customization | Enable to customize the bot's activity and status. |
| Bot activity | Text for the bot's "Now Playing" activity. |
| Bot activity type | Type of activity: Playing, Streaming, Listening, Watching. |
| Bot status | Bot's online status: Online, Idle, Do not disturb, Invisible. |
Output
The node outputs an array of objects, each with a json field containing:
{
"value": "...", // Value returned by the operation (e.g., user selection, action result)
"channelId": "...", // Channel ID where the message/action occurred
"userId": "...", // User ID involved (if applicable)
"userName": "...", // Username involved (if applicable)
"userTag": "...", // User tag (e.g., username#1234)
"messageId": "...", // ID of the sent/updated message
"action": "..." // Action performed (if applicable)
}
- Not all fields will be present for every operation; their presence depends on the chosen type and action.
- If the node is used for prompts (button/select), the
valuefield contains the user's response. - For actions,
actiondescribes what was performed.
If binary data is output (e.g., file attachments), it is handled internally and not exposed directly in the output structure.
Dependencies
- External Service: Requires a Discord bot and valid Discord API credentials (
discordApi). - n8n Configuration: The bot must be running and have access to the target channels/roles.
- Environment: No special environment variables required beyond standard n8n credential setup.
Troubleshooting
Common Issues:
- Missing Credentials: If Discord API credentials are not set or invalid, the node will throw an error during execution.
- Bot Permissions: The bot must have appropriate permissions in the target channel (send messages, manage roles, etc.).
- Channel/Role Not Listed: If channels or roles do not appear in dropdowns, ensure the bot is running and has access; try reopening the node modal.
- Message Not Sent: If neither a channel nor a trigger channel is specified, the node may not send a message.
- API Limits: Removing too many messages at once or trying to remove messages older than 4 weeks will fail due to Discord API restrictions.
Error Messages:
"Error: [error details]": Indicates a problem with the Discord API connection or request. Check credentials and bot status."Cannot read property '...' of undefined": Likely caused by missing required input properties for the selected operation/type.
Resolution Steps:
- Double-check all required fields for the selected type/action.
- Ensure the bot is online and has necessary permissions.
- Reopen the node configuration modal to refresh dynamic options.