Discord Action
Drives a Discord server from a flow. Seventeen operations grouped the way the panel groups them — messages, channels, threads, direct messages, and members & roles — so a flow can post a release note, open a thread for the discussion, and hand someone a role when they react.
Setup
Pick a Discord credential: a bot token, an OAuth connection, or an incoming webhook. The kind you pick decides which operations are available — a webhook can post, but it cannot read a message or move a role, so the operation list narrows to match.
Mode — action or AI toolkit
The Mode selector decides who drives the node. In Action mode you pick one operation and fill its fields, and the node does that every time it runs. In AI toolkit mode the operations become tools an AI Node can call, and the model chooses which one and with what arguments.
Operations
The Operation dropdown decides what the node does and which fields appear under it. These are the exact values the API validates against:
| Value | In the dropdown | What it does |
|---|---|---|
| sendMessage | Send message | Post text/embed to a channel or thread. Optional reply-to + threadId. |
| editMessage | Edit message | Edit content/embeds of a message the bot owns. |
| deleteMessage | Delete message | Delete by id. Messages from other users need Manage Messages. |
| getMessage | Get message | Fetch a single message plus its reactions and attachments. |
| addReaction | Add reaction | React as the bot. Custom emoji format: name:id. |
| removeReaction | Remove reaction | Remove the reaction the bot itself added. |
| pinMessage | Pin message | Pin a message in its channel. Needs Manage Messages. |
| createChannel | Create channel | Create text/voice/forum/announcement/category in a guild. |
| editChannel | Edit channel | Rename, change topic, slowmode, parent category. |
| deleteChannel | Delete channel | Permanently deletes a channel — irreversible. |
| getChannel | Get channel | Fetch the full config and permissions of a channel. |
| listChannels | List channels | Iterate every channel in a guild — output is iterable. |
| createThread | Create thread | Off a message OR standalone (public/private/announcement). |
| sendDM | Send DM | Direct message a user by id. Silently dropped if DMs disabled. |
| addRole | Add role to member | The role of the bot must be ABOVE the target role in the hierarchy. |
| removeRole | Remove role from member | Same hierarchy rule applies. |
| getMember | Get member | Fetch the nick, roles, joined_at and user object of a member. |
Gotchas
- Role hierarchy is enforced by Discord, not by us. The bot's own highest role has to sit above the role it is adding or removing. Same permissions, wrong order, and the call fails.
- Deleting other people's messages needs Manage Messages. The bot can always delete its own.
- A DM to a user with DMs disabled is dropped silently — Discord returns success. If delivery matters, post in a channel instead.
- Custom emoji use the
name:idform in reactions, not the:name:you type in the client. - Deleting a channel is irreversible. There is no trash in Discord.
listChannelsreturns an iterable payload, so a Loop or Aggregator downstream fans out over the channels with no glue.