discord / action / schema v2
Discord Action
Perform any Discord action: send messages, manage members, reply to commands
Prerequisites
- Add the discord plugin inside this workflow.
- Connect and authorize a discord account before running this node.
Parameters
| Parameter | Type | Description |
|---|---|---|
Action TypeactionType | select Required | What this node does on Discord. The fields below adapt to your choice. Start with "Send Message" if you are unsure. Options: Send Message (send_message), Send Embed (send_embed), Send Direct Message (send_dm), Delete Message (delete_message), Add Reaction (react), Reply to Slash Command (reply_interaction), Followup Message (followup_interaction), Open a Form Modal (open_modal), Add Role (add_role), Remove Role (remove_role), Kick Member (kick), Ban Member (ban), Unban User (unban), Timeout Member (timeout), Set Nickname (set_nickname), Server Mute / Unmute (voice_mute), Server Deafen / Undeafen (voice_deafen), Set Member Roles (replace all) (set_roles), Edit Message (edit_message), Pin Message (pin_message), Unpin Message (unpin_message), Remove Reaction (remove_reaction), Remove All Reactions (remove_all_reactions), Bulk Delete (purge) (bulk_delete), Crosspost (publish) (crosspost), Get Message (get_message), Get Recent Messages (list_messages), End Poll (end_poll), Get Poll Voters (get_poll_voters), Get Reactors (get_reactors), List Pinned Messages (list_pins), Get Member (get_member), Get Server Info (get_guild_info), List Members (list_members), Search Members (search_members), List Channels (list_channels), Get User (get_user), Check If Banned (check_ban), Read Audit Log (list_audit_log), List Active Threads (list_active_threads), Ban Multiple Members (bulk_ban), Update AutoMod Rule (update_automod_rule), List Roles (list_roles), Update Role (update_role), Get Channel Info (get_channel), Set Channel Permission (set_channel_permission), Reset Channel Permission (clear_channel_permission), List Channel Invites (list_channel_invites), Follow Announcement Channel (follow_channel), List Thread Members (list_thread_members), Join Thread (join_thread), Leave Thread (leave_thread), List Archived Threads (list_archived_threads), Create Channel (create_channel), Delete Channel (delete_channel), Create Thread (create_thread), Create Invite (create_invite), Move to Voice (move_to_voice), Disconnect from Voice (disconnect_voice), Remove Timeout (remove_timeout), Create Role (create_role), Delete Role (delete_role), Create Scheduled Event (create_event), Delete Scheduled Event (delete_event), List Scheduled Events (list_events), Create AutoMod Rule (create_automod_rule), Delete AutoMod Rule (delete_automod_rule), List AutoMod Rules (list_automod_rules), Create Webhook (create_webhook), Execute Webhook (execute_webhook), Delete Webhook (delete_webhook), Archive Thread (archive_thread), Lock Thread (lock_thread), Add Thread Member (add_thread_member), Remove Thread Member (remove_thread_member), Create Emoji (create_emoji), Delete Emoji (delete_emoji), Update Channel (update_channel), Update Server (update_guild), Prune Members (prune_guild), List Bans (list_bans), List Invites (list_invites), Delete Invite (delete_invite), Get Role (get_role), Preview Inactive Members (preview_prune), List Emojis (list_emojis), Pause Invites & DMs (raid shield) (pause_invites), Show Typing (show_typing), List Channel Webhooks (list_channel_webhooks), List Voice Channel Members (list_voice_members) |
ServerguildId | discord_guild Optional | The server to act in. Leave empty and it uses the server from the trigger event, or the workflow’s default server (workflow Settings → Connections).Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_message",
"send_embed",
"delete_message",
"react",
"add_role",
"remove_role",
"kick",
"ban",
"unban",
"timeout",
"set_nickname",
"create_channel",
"delete_channel",
"create_thread",
"create_invite",
"move_to_voice",
"disconnect_voice",
"remove_timeout",
"create_role",
"delete_role",
"voice_mute",
"voice_deafen",
"set_roles",
"create_event",
"delete_event",
"list_events",
"create_automod_rule",
"delete_automod_rule",
"list_automod_rules",
"create_emoji",
"delete_emoji",
"update_guild",
"prune_guild",
"list_bans",
"list_invites",
"delete_invite",
"get_member",
"list_roles",
"update_role",
"get_guild_info",
"list_members",
"search_members",
"list_channels",
"check_ban",
"bulk_ban",
"list_audit_log",
"list_active_threads",
"update_automod_rule",
"get_role",
"preview_prune",
"list_emojis",
"pause_invites",
"list_voice_members"
]
}
} |
ChannelchannelId | discord_channel Conditionally required | Where the action happens. Pick a fixed channel, or use {{channel_id}} (Custom) to reuse the channel the trigger came from. E.g. reply where the command was typed. The bot must be able to see and post in it.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_message",
"send_embed",
"delete_message",
"react",
"edit_message",
"pin_message",
"unpin_message",
"remove_reaction",
"remove_all_reactions",
"delete_channel",
"create_thread",
"create_invite",
"bulk_delete",
"crosspost",
"get_message",
"list_messages",
"create_webhook",
"update_channel",
"get_channel",
"set_channel_permission",
"clear_channel_permission",
"end_poll",
"get_poll_voters",
"get_reactors",
"list_pins",
"list_channel_invites",
"follow_channel",
"list_archived_threads",
"show_typing",
"list_channel_webhooks",
"list_voice_members"
]
},
"required": {
"key": "actionType",
"values": [
"send_message",
"send_embed",
"delete_message",
"react",
"edit_message",
"pin_message",
"unpin_message",
"remove_reaction",
"remove_all_reactions",
"delete_channel",
"create_thread",
"create_invite",
"bulk_delete",
"crosspost",
"get_message",
"list_messages",
"create_webhook",
"update_channel",
"get_channel",
"set_channel_permission",
"clear_channel_permission",
"end_poll",
"get_poll_voters",
"get_reactors",
"list_pins",
"list_channel_invites",
"follow_channel",
"list_archived_threads",
"show_typing",
"list_channel_webhooks",
"list_voice_members"
]
}
} |
UseruserId | discord_user Conditionally required | Choose the person this action should affect. The command author and a person selected in an argument are different sources. Missing targets never fall back to the author.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_dm",
"add_role",
"remove_role",
"kick",
"ban",
"unban",
"timeout",
"set_nickname",
"move_to_voice",
"disconnect_voice",
"remove_timeout",
"voice_mute",
"voice_deafen",
"set_roles",
"get_member",
"add_thread_member",
"remove_thread_member",
"get_user",
"check_ban"
]
},
"required": {
"key": "actionType",
"values": [
"send_dm",
"add_role",
"remove_role",
"kick",
"ban",
"unban",
"timeout",
"set_nickname",
"move_to_voice",
"disconnect_voice",
"remove_timeout",
"voice_mute",
"voice_deafen",
"set_roles",
"get_member",
"add_thread_member",
"remove_thread_member",
"get_user",
"check_ban"
]
}
} |
RoleroleId | discord_role Conditionally required | Field conditions{
"visible": {
"key": "actionType",
"values": [
"add_role",
"remove_role",
"delete_role",
"update_role",
"get_role"
]
},
"required": {
"key": "actionType",
"values": [
"add_role",
"remove_role",
"delete_role",
"update_role",
"get_role"
]
}
} |
Message Contentcontent | textarea Conditionally required Default: | The text your bot sends. Supports variables: click "Insert var" (or type {{ ) to drop in live data from previous nodes. E.g. {{author_username}} for the sender’s name.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_message",
"send_dm",
"reply_interaction",
"followup_interaction",
"execute_webhook"
]
},
"required": {
"key": "actionType",
"values": [
"execute_webhook"
]
}
} |
Update the same message (no new post)autoUpdate | boolean Optional | When this is on, a successful run does not create another post: it edits the message this node sent previously (24-hour rolling window). Turn it off when you expect a new Discord message on every run.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_message"
]
}
} |
Reply to Author MessagereplyToAuthor | boolean Optional | Sends the message as a quoted Discord reply to whatever message triggered the workflow, instead of a standalone message in the channel.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_message"
]
}
} |
Text-to-Speechtts | boolean Optional | Discord reads the message aloud to members who have the channel open. Use it for rare alerts only. It is easy to find annoying.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_message"
]
}
} |
Suppress Link PreviewssuppressEmbeds | boolean Optional | Prevent Discord from auto-expanding URLs in the messageField conditions{
"visible": {
"key": "actionType",
"values": [
"send_message"
]
}
} |
Silent MessagesuppressNotifications | boolean Optional | Send without triggering a push notification for the recipientsField conditions{
"visible": {
"key": "actionType",
"values": [
"send_message"
]
}
} |
Auto-Delete After (seconds)deleteAfterSeconds | text Optional | The bot deletes its own message after this many seconds (up to 300). Leave empty and the message stays forever. Handy for temporary confirmations.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_message"
]
}
} |
Embedsembeds | discord_embeds Optional | Rich cards attached to the message: title, description, color, images, fields. Built visually with a live preview; variables like {{username}} work in every text.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_message",
"send_dm",
"reply_interaction",
"followup_interaction",
"edit_message"
]
}
} |
Buttons & menuscomponents | discord_components Optional | Interactive buttons and select menus under the message. Each button/menu adds a direct output handle on this node, so you can connect the click or selection branch without creating a separate trigger node.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_message",
"reply_interaction",
"followup_interaction",
"edit_message"
]
}
} |
Buttons & menus modecomponentsMode | select Optional | What happens to this message’s existing buttons/menus when editing. "Leave as-is" ignores the Buttons & menus field above. Handy for a content-only edit. "Replace" swaps in whatever is configured above (nothing configured ⇒ clears them). "Disable all" greys out the existing ones without changing the field above. Default when left empty: replace if you configured buttons/menus above, otherwise leave as-is. Options: Leave as-is (default) (preserve), Replace with the buttons/menus above (replace), Keep, but grey out (disable) all (disable_all), Remove all buttons/menus (remove_all) Field conditions{
"visible": {
"key": "actionType",
"values": [
"edit_message"
]
}
} |
Reply to Message IDreplyTo | text Optional | Reply to a specific message. Overrides "Reply to Author"Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_message",
"send_embed"
]
}
} |
Attachments (file URLs)files | tags Optional | Paste PUBLIC http(s) links: images, GIFs, any file. Files on your computer can’t be used directly: upload them somewhere public first (an image host, a Discord message…) and paste the link. Variables work too, e.g. {{author_avatar}}.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_message",
"send_embed",
"send_dm",
"reply_interaction",
"followup_interaction"
]
}
} |
ImageimageUrl | image Optional | Adds a large image to the message (as an embed image). Pick an image from your library, paste a PUBLIC http(s) link, or use a variable like {{author_avatar}}. Leave empty for no image.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_message"
]
}
} |
Mentions & pingsallowedMentions | select Optional | Controls who actually receives a notification when the message contains @mentions. "No pings" is great for logs: the mention is visible but silent. Options: Default (Discord decides) (), No pings: mentions show but nobody is notified (none), Ping users only (users), Ping users & roles (users_roles), Ping everything (incl. @everyone) (all) Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_message",
"send_embed",
"send_dm",
"reply_interaction",
"followup_interaction"
]
}
} |
Poll questionpollQuestion | text Optional | Fill this in to attach a Discord poll to the message. Up to 300 characters. Leave empty for no poll.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_message"
]
}
} |
Poll answerspollAnswers | tags Optional | The choices members can vote for. Between 2 and 10, up to 55 characters each (Discord’s limit).Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_message"
]
}
} |
Poll duration (hours)pollDurationHours | text Optional | How long the poll stays open, in hours (1 to 768). Empty = 24 hours.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_message"
]
}
} |
Embed ID (permanent update)embedId | text Optional | Give this embed a unique ID. Every execution edits the same Discord messageField conditions{
"visible": {
"key": "actionType",
"values": [
"send_embed"
]
}
} |
Embed Titletitle | text Optional | Bold heading at the top of the card. Up to 256 characters.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_embed"
]
}
} |
Title Linkurl | text Optional | Makes the embed title clickable.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_embed"
]
}
} |
Embed Descriptiondescription | textarea Optional | Main text of the card. Supports Discord markdown and variables. Up to 4096 characters.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_embed"
]
}
} |
Color (hex)color | text Optional | Colour of the stripe on the left edge of the card. A quick way to tell alerts, info and success apart.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_embed"
]
}
} |
Footer Textfooter | text Optional | Small grey line at the bottom of the card: good for a source, a timestamp or a hint.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_embed"
]
}
} |
Thumbnail URLthumbnail | image Optional | Small picture in the top-right corner of the card, e.g. a user avatar or a logo.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_embed"
]
}
} |
Image URLimage | image Optional | Large picture displayed full-width under the text.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_embed"
]
}
} |
Fieldsfields | embed_fields Optional | Name/value rows shown in a grid inside the embed. Values support Discord markdown and variables; toggle "inl" to place fields side by side.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_embed"
]
}
} |
Author NameauthorName | text Optional | Small name line above the title, usually the person or service the card is about.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_embed"
]
}
} |
Author LinkauthorUrl | text Optional | Makes the author name clickable.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_embed"
]
}
} |
Author Icon URLauthorIcon | image Optional | Tiny round picture next to the author name.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_embed"
]
}
} |
Footer Icon URLfooterIcon | image Optional | Tiny picture next to the footer text.Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_embed"
]
}
} |
Add Timestamptimestamp | boolean Optional | Field conditions{
"visible": {
"key": "actionType",
"values": [
"send_embed"
]
}
} |
Message IDmessageId | text Conditionally required | The message this action targets. For Create Thread it's optional: fill it in to start the thread from that message, leave empty for a standalone thread.Field conditions{
"visible": {
"key": "actionType",
"values": [
"delete_message",
"react",
"edit_message",
"pin_message",
"unpin_message",
"remove_reaction",
"remove_all_reactions",
"crosspost",
"get_message",
"create_thread",
"end_poll",
"get_poll_voters",
"get_reactors"
]
},
"required": {
"key": "actionType",
"values": [
"delete_message",
"react",
"edit_message",
"pin_message",
"unpin_message",
"remove_reaction",
"remove_all_reactions",
"crosspost",
"get_message",
"end_poll",
"get_poll_voters",
"get_reactors"
]
}
} |
Number to delete (max 100)count | text Optional | Bulk-delete the N most recent messages (skips messages older than 14 days)Field conditions{
"visible": {
"key": "actionType",
"values": [
"bulk_delete"
]
}
} |
Emojiemoji | text Conditionally required Default: | Field conditions{
"visible": {
"key": "actionType",
"values": [
"react",
"remove_reaction",
"get_reactors"
]
},
"required": {
"key": "actionType",
"values": [
"react",
"remove_reaction",
"get_reactors"
]
}
} |
Interaction IDinteractionId | text Required | Which interaction (slash command, button, select menu, modal) this reply answers. Filled in automatically when you connect the trigger. You normally never touch it. Required: a reply can't be sent without it. Discord gives only 3 seconds to acknowledge an interaction: Noria already does that for you the instant it arrives, before your workflow even starts, so you get up to 15 minutes to actually reply here. No separate "defer" step needed.Field conditions{
"visible": {
"key": "actionType",
"values": [
"reply_interaction",
"followup_interaction",
"open_modal"
]
}
} |
Form modalopenModal | modal_builder Conditionally required | Discord only allows a modal as the immediate response to a button click. Wire the message’s on_button:<custom_id> output straight into this action; do not place another node between them.Field conditions{
"visible": {
"key": "actionType",
"values": [
"open_modal"
]
},
"required": {
"key": "actionType",
"values": [
"open_modal"
]
}
} |
Private reply (only they see it)ephemeral | boolean Optional | Only the person who triggered this can see the message. Everyone else sees nothing. Only takes effect when this action runs right after a Slash Command, Button, Select Menu, or Modal (Discord has no way to make a plain channel message private otherwise); if there's nothing to reply to, this is silently ignored and the message posts normally.Field conditions{
"visible": {
"key": "actionType",
"values": [
"reply_interaction",
"followup_interaction",
"send_message"
]
}
} |
Reasonreason | text Optional | Shown in the server's audit logField conditions{
"visible": {
"key": "actionType",
"values": [
"add_role",
"remove_role",
"kick",
"ban",
"timeout",
"voice_mute",
"voice_deafen",
"set_roles",
"delete_channel",
"create_role",
"delete_role",
"update_role",
"set_channel_permission",
"clear_channel_permission",
"follow_channel",
"bulk_ban"
]
}
} |
Mute (uncheck = unmute)mute | boolean Optional | Server-mute the member in voice; uncheck to unmuteField conditions{
"visible": {
"key": "actionType",
"values": [
"voice_mute"
]
}
} |
Deafen (uncheck = undeafen)deaf | boolean Optional | Server-deafen the member in voice; uncheck to undeafenField conditions{
"visible": {
"key": "actionType",
"values": [
"voice_deafen"
]
}
} |
Roles to setroleIds | discord_role Optional | Replace the member’s roles with these (leave empty to remove all roles)Field conditions{
"visible": {
"key": "actionType",
"values": [
"set_roles"
]
}
} |
Duration (minutes)durationMinutes | text Optional | Field conditions{
"visible": {
"key": "actionType",
"values": [
"timeout"
]
}
} |
Delete Message History (seconds)deleteMessageSeconds | text Optional | Field conditions{
"visible": {
"key": "actionType",
"values": [
"ban"
]
}
} |
Nicknamenickname | text Conditionally required | Field conditions{
"visible": {
"key": "actionType",
"values": [
"set_nickname"
]
},
"required": {
"key": "actionType",
"values": [
"set_nickname"
]
}
} |
New ContentnewContent | textarea Optional | Field conditions{
"visible": {
"key": "actionType",
"values": [
"edit_message"
]
}
} |
Remove from User (optional)targetUserId | discord_user Optional | Leave empty to remove all reactions of this emojiField conditions{
"visible": {
"key": "actionType",
"values": [
"remove_reaction"
]
}
} |
Channel NamechannelName | text Required | Discord lowercases text channel names and replaces spaces with dashes. Variables work, e.g. ticket-{{author_username}}.Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_channel"
]
}
} |
Channel TypechannelType | select Required | Options: Text (text), Voice (voice) Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_channel"
]
}
} |
CategorycategoryId | discord_category Optional | Create the channel under this category. Leave empty for the top level.Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_channel"
]
}
} |
Topic (text channel)topic | text Optional | Short line shown next to the channel name and in its header. Ignored for voice channels.Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_channel",
"update_channel"
]
}
} |
NSFWnsfw | boolean Optional | Marks the channel as age-restricted: members must confirm they are 18+ before reading it.Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_channel"
]
}
} |
Slowmode (seconds)slowmode | text Optional | Minimum wait between two messages from the same member. 0 turns it off; up to 21600 (6 hours).Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_channel"
]
}
} |
Bitrate (voice, bps)bitrate | number Optional | Audio quality of a voice channel. 64000 is the default; higher values need a boosted server.Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_channel"
]
}
} |
User Limit (voice, 0 = unlimited)userLimit | number Optional | Maximum number of people who can join the voice channel at once.Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_channel"
]
}
} |
Thread NamethreadName | text Required | Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_thread"
]
}
} |
Auto-Archive AfterautoArchiveDuration | select Optional | Options: 1 hour (60), 1 day (1440), 3 days (4320), 1 week (10080) Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_thread"
]
}
} |
Expires After (seconds)inviteMaxAge | text Optional | 0 = never expiresField conditions{
"visible": {
"key": "actionType",
"values": [
"create_invite"
]
}
} |
Max UsesinviteMaxUses | text Optional | 0 = unlimitedField conditions{
"visible": {
"key": "actionType",
"values": [
"create_invite"
]
}
} |
Target Voice ChannelvoiceChannelId | discord_channel Required | The destination can be a fixed voice channel or a channel variable from an upstream action such as Create Channel.Field conditions{
"visible": {
"key": "actionType",
"values": [
"move_to_voice"
]
}
} |
Role NameroleName | text Required | Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_role"
]
}
} |
Role ColorroleColor | text Optional | Hex color for the roleField conditions{
"visible": {
"key": "actionType",
"values": [
"create_role",
"update_role"
]
}
} |
Show separately in member listhoist | boolean Optional | Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_role",
"update_role"
]
}
} |
Allow @mentionmentionable | boolean Optional | Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_role",
"update_role"
]
}
} |
Event NameeventName | text Required | Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_event"
]
}
} |
Event TypeeventEntityType | select Required | Options: External (location) (external), Voice channel (voice) Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_event"
]
}
} |
Start (ISO 8601)eventStartTime | text Required | Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_event"
]
}
} |
End timeeventEndTime | text Conditionally required | Discord requires an end time for an External-location event.Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_event"
]
},
"required": {
"key": "eventEntityType",
"values": [
"external"
]
}
} |
Voice channeleventChannelId | discord_channel Conditionally required | Discord requires a voice channel for a Voice-entity event.Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_event"
]
},
"required": {
"key": "eventEntityType",
"values": [
"voice"
]
}
} |
LocationeventLocation | text Conditionally required | Discord requires a location for an External event, without one it publishes with a placeholder "TBD" location.Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_event"
]
},
"required": {
"key": "eventEntityType",
"values": [
"external"
]
}
} |
DescriptioneventDescription | textarea Optional | Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_event"
]
}
} |
Event IDeventId | text Required | Field conditions{
"visible": {
"key": "actionType",
"values": [
"delete_event"
]
}
} |
Rule NameautomodName | text Conditionally required | Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_automod_rule",
"update_automod_rule"
]
},
"required": {
"key": "actionType",
"values": [
"create_automod_rule"
]
}
} |
Blocked KeywordsautomodKeywords | tags Conditionally required | For Update, setting this REPLACES the rule's whole keyword list.Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_automod_rule",
"update_automod_rule"
]
},
"required": {
"key": "actionType",
"values": [
"create_automod_rule"
]
}
} |
Rule IDautomodRuleId | text Conditionally required | Which AutoMod rule to act on. Wire {{rule_id}} from List AutoMod Rules or from the AutoMod Rule Changed trigger.Field conditions{
"visible": {
"key": "actionType",
"values": [
"delete_automod_rule",
"update_automod_rule"
]
},
"required": {
"key": "actionType",
"values": [
"delete_automod_rule",
"update_automod_rule"
]
}
} |
Webhook NamewebhookName | text Required | Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_webhook"
]
}
} |
Webhook URLwebhookUrl | text Required | Field conditions{
"visible": {
"key": "actionType",
"values": [
"execute_webhook"
]
}
} |
Override UsernamewebhookUsername | text Optional | Field conditions{
"visible": {
"key": "actionType",
"values": [
"execute_webhook"
]
}
} |
Override Avatar URLwebhookAvatarUrl | image Optional | Field conditions{
"visible": {
"key": "actionType",
"values": [
"execute_webhook"
]
}
} |
Webhook IDwebhookId | text Required | Field conditions{
"visible": {
"key": "actionType",
"values": [
"delete_webhook"
]
}
} |
Thread IDthreadId | text Required | Field conditions{
"visible": {
"key": "actionType",
"values": [
"archive_thread",
"lock_thread",
"add_thread_member",
"remove_thread_member",
"list_thread_members",
"join_thread",
"leave_thread"
]
}
} |
Archived (uncheck to unarchive)archived | boolean Optional | On: the thread is hidden from the channel list until someone posts in it. Off: it is brought back as an active thread.Field conditions{
"visible": {
"key": "actionType",
"values": [
"archive_thread"
]
}
} |
Locked (uncheck to unlock)locked | boolean Optional | On: only moderators can post or reopen the thread. Off: members can write in it again.Field conditions{
"visible": {
"key": "actionType",
"values": [
"lock_thread"
]
}
} |
Emoji NameemojiName | text Required | Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_emoji"
]
}
} |
Image URLemojiImageUrl | image Required | Field conditions{
"visible": {
"key": "actionType",
"values": [
"create_emoji"
]
}
} |
Emoji IDemojiId | text Required | Field conditions{
"visible": {
"key": "actionType",
"values": [
"delete_emoji"
]
}
} |
New NamenewName | text Conditionally required | Leave empty to keep the current name. For Update Role, every field you leave empty stays exactly as it is on Discord.Field conditions{
"visible": {
"key": "actionType",
"values": [
"update_channel",
"update_guild",
"update_role"
]
},
"required": {
"key": "actionType",
"values": [
"update_guild"
]
}
} |
Prune inactive for (days)pruneDays | text Optional | How long someone must have been away to count as inactive. Discord allows 1 to 30 days; anything outside that is clamped.Field conditions{
"visible": {
"key": "actionType",
"values": [
"prune_guild",
"preview_prune"
]
}
} |
Also count members with these rolespruneIncludeRoleIds | discord_role Optional | Discord only counts members who hold NO role at all. Pick roles here to also count members whose only roles are those, without it the preview reads 0 on most servers.Field conditions{
"visible": {
"key": "actionType",
"values": [
"preview_prune"
]
}
} |
Pause invites for (minutes)pauseInvitesMinutes | text Optional | Nobody can join with an invite during this window. 0 lifts the pause immediately. Discord's maximum is 24 hours (1440). Longer values are clamped. Leave empty to leave invites as they are.Field conditions{
"visible": {
"key": "actionType",
"values": [
"pause_invites"
]
}
} |
Pause direct messages for (minutes)pauseDmsMinutes | text Optional | Members who don't already share a DM can't message each other during this window. The usual raid follow-up. 0 lifts it, empty leaves it untouched, and Discord caps it at 24 hours (1440).Field conditions{
"visible": {
"key": "actionType",
"values": [
"pause_invites"
]
}
} |
Invite CodeinviteCode | text Required | Field conditions{
"visible": {
"key": "actionType",
"values": [
"delete_invite"
]
}
} |
How many messagesmessageLimit | text Optional | Reads the most recent messages in the channel, for digests, "what did I miss" summaries, or scanning before a cleanup. Empty = 50.Field conditions{
"visible": {
"key": "actionType",
"values": [
"list_messages"
]
}
} |
Read before this messagebeforeMessageId | text Optional | Only messages older than this one. Use it to walk further back a page at a time.Field conditions{
"visible": {
"key": "actionType",
"values": [
"list_messages"
]
}
} |
Apply topermissionTargetType | select Optional Default: | Whether the id below is a role or a member. A ticket channel usually allows one MEMBER; a private area usually allows a ROLE. Options: A role (role), A single member (member) Field conditions{
"visible": {
"key": "actionType",
"values": [
"set_channel_permission",
"clear_channel_permission"
]
}
} |
RolepermissionRoleId | discord_role Conditionally required | The role the rule applies to. E.g. deny "View Channel" for @everyone to make a channel private.Field conditions{
"visible": {
"key": "actionType",
"values": [
"set_channel_permission",
"clear_channel_permission"
]
},
"required": {
"key": "actionType",
"values": [
"set_channel_permission",
"clear_channel_permission"
]
}
} |
MemberpermissionUserId | discord_user Conditionally required | The member the rule applies to. A ticket channel usually allows exactly one, often {{user_id}} for whoever triggered the workflow.Field conditions{
"visible": {
"key": "permissionTargetType",
"values": [
"member"
]
},
"required": {
"key": "permissionTargetType",
"values": [
"member"
]
}
} |
AllowpermissionAllow | multiselect Optional | Explicitly granted in this channel, whatever the member's roles say. Anything you leave out of both lists is inherited unchanged. Options: View Channel (ViewChannel), Send Messages (SendMessages), Read Message History (ReadMessageHistory), Manage Messages (ManageMessages), Embed Links (EmbedLinks), Attach Files (AttachFiles), Add Reactions (AddReactions), Use External Emoji (UseExternalEmojis), Mention @everyone, @here and All Roles (MentionEveryone), Send Messages in Threads (SendMessagesInThreads), Create Public Threads (CreatePublicThreads), Create Private Threads (CreatePrivateThreads), Manage Threads (ManageThreads), Use Application Commands (UseApplicationCommands), Connect (voice) (Connect), Speak (voice) (Speak), Video (voice) (Stream), Mute Members (voice) (MuteMembers), Deafen Members (voice) (DeafenMembers), Move Members (voice) (MoveMembers) Field conditions{
"visible": {
"key": "actionType",
"values": [
"set_channel_permission"
]
}
} |
DenypermissionDeny | multiselect Optional | Explicitly blocked in this channel. Denying "View Channel" for @everyone plus allowing it for one member is how a private channel is built. Options: View Channel (ViewChannel), Send Messages (SendMessages), Read Message History (ReadMessageHistory), Manage Messages (ManageMessages), Embed Links (EmbedLinks), Attach Files (AttachFiles), Add Reactions (AddReactions), Use External Emoji (UseExternalEmojis), Mention @everyone, @here and All Roles (MentionEveryone), Send Messages in Threads (SendMessagesInThreads), Create Public Threads (CreatePublicThreads), Create Private Threads (CreatePrivateThreads), Manage Threads (ManageThreads), Use Application Commands (UseApplicationCommands), Connect (voice) (Connect), Speak (voice) (Speak), Video (voice) (Stream), Mute Members (voice) (MuteMembers), Deafen Members (voice) (DeafenMembers), Move Members (voice) (MoveMembers) Field conditions{
"visible": {
"key": "actionType",
"values": [
"set_channel_permission"
]
}
} |
Answer numberpollAnswerId | text Conditionally required | 1 for the poll's first answer, 2 for the second, and so on.Field conditions{
"visible": {
"key": "actionType",
"values": [
"get_poll_voters"
]
},
"required": {
"key": "actionType",
"values": [
"get_poll_voters"
]
}
} |
How many votersvoterLimit | text Optional | Discord returns at most 100 voters per read.Field conditions{
"visible": {
"key": "actionType",
"values": [
"get_poll_voters"
]
}
} |
How many reactorsreactorLimit | text Optional | Discord returns at most 100 per read.Field conditions{
"visible": {
"key": "actionType",
"values": [
"get_reactors"
]
}
} |
How many pinspinLimit | text Optional | Discord allows up to 50 pinned messages per channel.Field conditions{
"visible": {
"key": "actionType",
"values": [
"list_pins"
]
}
} |
Read after this messageafterMessageId | text Optional | Discord accepts one anchor per read. If you fill in more than one of the three, "around" wins, then "after", then "before".Field conditions{
"visible": {
"key": "actionType",
"values": [
"list_messages"
]
}
} |
Read around this messagearoundMessageId | text Optional | The messages surrounding this one. Handy for reporting context.Field conditions{
"visible": {
"key": "actionType",
"values": [
"list_messages"
]
}
} |
Specific messages to deletemessageIds | tags Optional | Deletes exactly these messages rather than "the last N". Discord refuses anything older than 14 days either way, and caps a single call at 100.Field conditions{
"visible": {
"key": "actionType",
"values": [
"bulk_delete"
]
}
} |
How many membersthreadMemberLimit | text Optional | Field conditions{
"visible": {
"key": "actionType",
"values": [
"list_thread_members"
]
}
} |
How many threadsthreadLimit | text Optional | Field conditions{
"visible": {
"key": "actionType",
"values": [
"list_archived_threads"
]
}
} |
Republish intofollowTargetChannelId | discord_channel Conditionally required | The channel that receives the announcements. The source channel above must be an ANNOUNCEMENT channel; this destination is a normal one, in this server or another the bot is in.Field conditions{
"visible": {
"key": "actionType",
"values": [
"follow_channel"
]
},
"required": {
"key": "actionType",
"values": [
"follow_channel"
]
}
} |
Server descriptionguildDescription | text Optional | Field conditions{
"visible": {
"key": "actionType",
"values": [
"update_guild"
]
}
} |
How many membersmemberLimit | text Optional | Discord returns at most 1000 per read.Field conditions{
"visible": {
"key": "actionType",
"values": [
"list_members",
"search_members"
]
}
} |
Search textmemberQuery | text Conditionally required | Discord matches the START of a username or nickname. "Ada" finds "adalovelace", but "lovelace" does not.Field conditions{
"visible": {
"key": "actionType",
"values": [
"search_members"
]
},
"required": {
"key": "actionType",
"values": [
"search_members"
]
}
} |
Action FilterauditAction | text Optional | One audit action, using the same names the Audit Log Entry trigger produces (member_kick, channel_delete, role_update…). Empty = every action.Field conditions{
"visible": {
"key": "actionType",
"values": [
"list_audit_log"
]
}
} |
How many entriesauditLimit | text Optional | Discord returns at most 100 per read.Field conditions{
"visible": {
"key": "actionType",
"values": [
"list_audit_log"
]
}
} |
Members to banuserIds | discord_user Conditionally required | Up to 200 user ids in one call. This is Discord's own raid-response endpoint. Ids that cannot be banned (already banned, higher role) come back in the failed count rather than failing the whole action.Field conditions{
"visible": {
"key": "actionType",
"values": [
"bulk_ban"
]
},
"required": {
"key": "actionType",
"values": [
"bulk_ban"
]
}
} |
Rule enabledautomodEnabled | select Optional | Switching a rule off is the quickest way to stop it misfiring without losing its configuration. Options: Leave unchanged (), On (yes), Off (no) Field conditions{
"visible": {
"key": "actionType",
"values": [
"update_automod_rule"
]
}
} |
Verification levelverificationLevel | select Optional | Raising this is the standard response to a raid: "High" stops accounts that just joined from posting. Remember to lower it again afterwards with a second action. Options: Leave unchanged (), None. Anyone can post (none), Low: verified email (low), Medium: registered 5+ minutes (medium), High: member of this server 10+ minutes (high), Highest: verified phone (highest) Field conditions{
"visible": {
"key": "actionType",
"values": [
"update_guild"
]
}
} |
Scan media for explicit contentexplicitContentFilter | select Optional | Options: Leave unchanged (), Off (disabled), Members without roles (members_without_roles), Everyone (all_members) Field conditions{
"visible": {
"key": "actionType",
"values": [
"update_guild"
]
}
} |
Inputs and outputs
Inputs
execute- Execute (input)
Outputs
done- Done (output)error- Error (output)message_id- Message ID (output)channel_id- Channel ID (output)guild_id- Server ID (output)
Output data schema
[
{
"key": "message_id",
"type": "snowflake",
"optional": false,
"operations": [
"send_message",
"send_embed",
"send_dm"
],
"description": "Get Message: the message this action targets.",
"bindingRole": "created_resource"
},
{
"key": "message_id",
"type": "snowflake",
"optional": false,
"operations": [
"get_message",
"end_poll"
],
"description": "Get Message: the message this action targets.",
"bindingRole": "selected_target"
},
{
"key": "delivery",
"type": "string",
"optional": true,
"operations": [
"send_message"
],
"description": "Sent means a new Discord message was posted; updated means Auto-Update edited the existing message."
},
{
"key": "content",
"type": "string",
"optional": true,
"operations": [
"send_message",
"send_embed",
"send_dm",
"get_message"
],
"description": "Get Message: the message text."
},
{
"key": "author_id",
"type": "snowflake",
"optional": true,
"operations": [
"send_message",
"send_embed",
"send_dm",
"get_message"
],
"description": "Get Message: the author's user id.",
"bindingRole": "owner"
},
{
"key": "author",
"type": "string",
"optional": true,
"operations": [
"send_message",
"send_embed",
"send_dm",
"get_message"
],
"description": "Get Message: the author's display name.",
"bindingRole": "owner"
},
{
"key": "timestamp",
"type": "timestamp",
"optional": true,
"operations": [
"send_message",
"send_embed",
"send_dm",
"get_message"
],
"description": "Get Message: when it was sent."
},
{
"key": "jump_url",
"type": "url",
"optional": true,
"operations": [
"send_message",
"send_embed",
"send_dm",
"get_message"
],
"description": "Get Message: a link straight to the message."
},
{
"key": "pinned",
"type": "boolean",
"optional": true,
"operations": [
"get_message"
],
"description": "Get Message: whether it is pinned."
},
{
"key": "attachment_count",
"type": "number",
"optional": true,
"operations": [
"get_message"
],
"description": "Get Message: how many files are attached."
},
{
"key": "user_id",
"type": "snowflake",
"optional": false,
"operations": [
"add_role",
"remove_role",
"get_user",
"check_ban"
],
"description": "Add Role / Remove Role / Get User / Check Ban: the user this action targets.",
"bindingRole": "selected_target"
},
{
"key": "channel_id",
"type": "discord.channel.id",
"optional": false,
"operations": [
"create_channel"
],
"typeByConfig": {
"key": "channelType",
"cases": {
"text": "discord.channel.text.id",
"voice": "discord.channel.voice.id"
}
},
"description": "Create Channel: the new Discord channel, ready to use as a downstream target.",
"bindingRole": "created_resource"
},
{
"key": "channel_name",
"type": "discord.channel.name",
"optional": true,
"operations": [
"create_channel",
"get_channel"
],
"description": "Create Channel: the new channel's name."
},
{
"key": "thread_id",
"type": "snowflake",
"optional": false,
"operations": [
"create_thread"
],
"description": "Create Thread: the new thread's id.",
"bindingRole": "created_resource"
},
{
"key": "thread_name",
"type": "string",
"optional": true,
"operations": [
"create_thread"
],
"description": "Create Thread: the new thread's name."
},
{
"key": "invite_code",
"type": "string",
"optional": true,
"operations": [
"create_invite"
],
"description": "Create Invite: the invite's short code (e.g. \"aBcD1e\")."
},
{
"key": "invite_url",
"type": "url",
"optional": true,
"operations": [
"create_invite"
],
"description": "Create Invite: the full, shareable invite link."
},
{
"key": "role_id",
"type": "snowflake",
"optional": false,
"operations": [
"create_role"
],
"description": "The role created, updated, assigned, removed, or looked up by this action.",
"bindingRole": "created_resource"
},
{
"key": "role_id",
"type": "snowflake",
"optional": false,
"operations": [
"update_role",
"add_role",
"remove_role",
"get_role"
],
"description": "The role created, updated, assigned, removed, or looked up by this action.",
"bindingRole": "selected_target"
},
{
"key": "role_name",
"type": "string",
"optional": true,
"operations": [
"create_role",
"update_role",
"add_role",
"remove_role"
],
"description": "Create Role: the new role's name."
},
{
"key": "event_id",
"type": "snowflake",
"optional": false,
"operations": [
"create_event"
],
"description": "Create Event: the new scheduled event's id.",
"bindingRole": "created_resource"
},
{
"key": "event_name",
"type": "string",
"optional": true,
"operations": [
"create_event"
],
"description": "Create Event: the new event's name."
},
{
"key": "events",
"type": "array",
"optional": true,
"operations": [
"list_events"
],
"description": "List Events: every scheduled event in the server.",
"items": {
"key": "event",
"type": "object",
"fields": [
{
"key": "id",
"type": "snowflake"
},
{
"key": "name",
"type": "string"
},
{
"key": "start_time",
"type": "timestamp"
}
]
}
},
{
"key": "rule_id",
"type": "snowflake",
"optional": false,
"operations": [
"create_automod_rule"
],
"description": "Create AutoMod Rule: the new rule's id.",
"bindingRole": "created_resource"
},
{
"key": "rule_id",
"type": "snowflake",
"optional": false,
"operations": [
"update_automod_rule"
],
"description": "Create AutoMod Rule: the new rule's id.",
"bindingRole": "selected_target"
},
{
"key": "rule_name",
"type": "string",
"optional": true,
"operations": [
"create_automod_rule",
"update_automod_rule"
],
"description": "Create AutoMod Rule: the new rule's name."
},
{
"key": "rules",
"type": "array",
"optional": true,
"operations": [
"list_automod_rules"
],
"description": "List AutoMod Rules: every rule in the server.",
"items": {
"key": "rule",
"type": "object",
"fields": [
{
"key": "id",
"type": "snowflake"
},
{
"key": "name",
"type": "string"
}
]
}
},
{
"key": "webhook_id",
"type": "snowflake",
"optional": false,
"operations": [
"create_webhook"
],
"description": "Create Webhook: the new webhook's id.",
"bindingRole": "created_resource"
},
{
"key": "webhook_url",
"type": "url",
"optional": true,
"operations": [
"create_webhook"
],
"description": "Create Webhook: the URL to POST to from outside Discord."
},
{
"key": "emoji_id",
"type": "snowflake",
"optional": true,
"operations": [
"create_emoji"
],
"description": "Create Emoji: the new custom emoji's id."
},
{
"key": "emoji_name",
"type": "string",
"optional": true,
"operations": [
"create_emoji"
],
"description": "Create Emoji: the new emoji's name."
},
{
"key": "pruned",
"type": "number",
"optional": true,
"operations": [
"prune_guild"
],
"description": "Prune Server: how many inactive members were removed."
},
{
"key": "bans",
"type": "array",
"optional": true,
"operations": [
"list_bans"
],
"description": "List Bans: every banned user in the server.",
"items": {
"key": "ban",
"type": "object",
"fields": [
{
"key": "user_id",
"type": "snowflake"
},
{
"key": "username",
"type": "string"
},
{
"key": "reason",
"type": "string"
}
]
}
},
{
"key": "invites",
"type": "array",
"optional": true,
"operations": [
"list_invites"
],
"description": "List Invites: every active invite in the server.",
"items": {
"key": "invite",
"type": "object",
"fields": [
{
"key": "code",
"type": "string"
},
{
"key": "uses",
"type": "number"
},
{
"key": "channel_id",
"type": "snowflake"
}
]
}
},
{
"key": "invites",
"type": "array",
"optional": true,
"operations": [
"list_channel_invites"
],
"description": "List Channel Invites: active invites to the selected channel.",
"items": {
"key": "invite",
"type": "object",
"fields": [
{
"key": "code",
"type": "string"
},
{
"key": "uses",
"type": "number"
},
{
"key": "max_uses",
"type": "number"
},
{
"key": "inviter_id",
"type": "discord.user.id"
},
{
"key": "expires_at",
"type": "timestamp"
}
]
}
},
{
"key": "would_prune",
"type": "number",
"optional": true,
"operations": [
"preview_prune"
],
"description": "Preview Inactive Members: how many members WOULD be removed. Nobody was."
},
{
"key": "role_name",
"type": "string",
"optional": true,
"operations": [
"get_role"
],
"description": "Get Role: the role's name."
},
{
"key": "color",
"type": "string",
"optional": true,
"operations": [
"get_role"
],
"description": "Get Role: the role's colour as a hex code (#5865f2)."
},
{
"key": "position",
"type": "number",
"optional": true,
"operations": [
"get_role"
],
"description": "Get Role: where the role sits in the list. Higher outranks lower. This is what decides whether the bot may manage a member holding it."
},
{
"key": "hoist",
"type": "boolean",
"optional": true,
"operations": [
"get_role"
],
"description": "Get Role: whether members with this role are shown separately in the sidebar."
},
{
"key": "mentionable",
"type": "boolean",
"optional": true,
"operations": [
"get_role"
],
"description": "Get Role: whether anyone can @mention this role."
},
{
"key": "managed",
"type": "boolean",
"optional": true,
"operations": [
"get_role"
],
"description": "Get Role: true when Discord owns the role (a bot or a Twitch/Patreon integration created it). Those can never be assigned or edited."
},
{
"key": "member_count",
"type": "number",
"optional": true,
"operations": [
"get_role"
],
"description": "Get Role: how many members hold it, as far as the bot has cached. Treat as an estimate, not a count."
},
{
"key": "emojis",
"type": "array",
"optional": true,
"operations": [
"list_emojis"
],
"description": "List Emojis: every custom emoji in the server.",
"items": {
"key": "emoji",
"type": "object",
"fields": [
{
"key": "id",
"type": "snowflake"
},
{
"key": "name",
"type": "string"
},
{
"key": "animated",
"type": "boolean"
},
{
"key": "managed",
"type": "boolean"
},
{
"key": "available",
"type": "boolean"
},
{
"key": "mention",
"type": "string"
}
]
}
},
{
"key": "invites_disabled_until",
"type": "timestamp",
"optional": true,
"operations": [
"pause_invites"
],
"description": "Pause Invites & DMs: when invites turn back on. Empty means they are on."
},
{
"key": "dms_disabled_until",
"type": "timestamp",
"optional": true,
"operations": [
"pause_invites"
],
"description": "Pause Invites & DMs: when direct messages turn back on. Empty means they are on."
},
{
"key": "webhooks",
"type": "array",
"optional": true,
"operations": [
"list_channel_webhooks"
],
"description": "List Channel Webhooks: the webhooks on this channel. Their tokens are deliberately not returned. A webhook token is a password anyone could post with.",
"items": {
"key": "webhook",
"type": "object",
"fields": [
{
"key": "id",
"type": "snowflake"
},
{
"key": "name",
"type": "string"
},
{
"key": "type",
"type": "string"
},
{
"key": "channel_id",
"type": "snowflake"
}
]
}
},
{
"key": "member_ids",
"type": "array",
"optional": true,
"operations": [
"list_voice_members"
],
"description": "List Voice Channel Members: the ids of everyone currently in the channel.",
"items": {
"key": "user_id",
"type": "snowflake"
}
},
{
"key": "member_count",
"type": "number",
"optional": true,
"operations": [
"list_voice_members"
],
"description": "List Voice Channel Members: how many people are currently in the channel."
},
{
"key": "is_empty",
"type": "boolean",
"optional": true,
"operations": [
"list_voice_members"
],
"description": "List Voice Channel Members: true when nobody is in the channel right now."
},
{
"key": "members",
"type": "array",
"optional": true,
"operations": [
"list_voice_members"
],
"description": "List Voice Channel Members: who is currently in the channel.",
"items": {
"key": "member",
"type": "object",
"fields": [
{
"key": "id",
"type": "snowflake"
},
{
"key": "username",
"type": "string"
},
{
"key": "display_name",
"type": "string"
}
]
}
},
{
"key": "messages",
"type": "array",
"optional": true,
"operations": [
"list_messages"
],
"description": "Get Recent Messages: the channel's latest messages, newest first.",
"items": {
"key": "message",
"type": "object",
"fields": [
{
"key": "message_id",
"type": "snowflake"
},
{
"key": "content",
"type": "string"
},
{
"key": "author_id",
"type": "snowflake"
},
{
"key": "author",
"type": "string"
},
{
"key": "timestamp",
"type": "timestamp"
},
{
"key": "jump_url",
"type": "url"
},
{
"key": "pinned",
"type": "boolean"
},
{
"key": "attachment_count",
"type": "number"
},
{
"key": "is_bot",
"type": "boolean"
}
]
}
},
{
"key": "message_count",
"type": "number",
"optional": true,
"operations": [
"list_messages"
],
"description": "Get Recent Messages: how many came back."
},
{
"key": "deleted",
"type": "number",
"optional": true,
"operations": [
"bulk_delete"
],
"description": "Delete Multiple Messages: how many messages were actually deleted."
},
{
"key": "member_id",
"type": "snowflake",
"optional": true,
"operations": [
"get_member"
],
"description": "Get Member: the member's user id."
},
{
"key": "username",
"type": "string",
"optional": true,
"operations": [
"get_member",
"add_role",
"remove_role",
"get_user",
"check_ban"
],
"description": "Get Member: the account's username."
},
{
"key": "display_name",
"type": "string",
"optional": true,
"operations": [
"get_member",
"get_user"
],
"description": "Get Member: the name shown in this server (nickname if set)."
},
{
"key": "nickname",
"type": "string",
"optional": true,
"operations": [
"get_member"
],
"description": "Get Member: the server nickname, empty when none is set."
},
{
"key": "avatar",
"type": "url",
"optional": true,
"operations": [
"get_member",
"get_user"
],
"description": "Get Member: the member's avatar image."
},
{
"key": "joined_at",
"type": "timestamp",
"optional": true,
"operations": [
"get_member"
],
"description": "Get Member: when they joined this server."
},
{
"key": "premium_since",
"type": "timestamp",
"optional": true,
"operations": [
"get_member"
],
"description": "Get Member: when they started boosting, empty when they don't."
},
{
"key": "is_boosting",
"type": "boolean",
"optional": true,
"operations": [
"get_member"
],
"description": "Get Member: whether they currently boost the server."
},
{
"key": "is_bot",
"type": "boolean",
"optional": true,
"operations": [
"get_member",
"get_user"
],
"description": "Get Member: whether the account is a bot."
},
{
"key": "timed_out_until",
"type": "timestamp",
"optional": true,
"operations": [
"get_member"
],
"description": "Get Member: when their timeout ends, empty when not timed out."
},
{
"key": "role_ids",
"type": "array",
"optional": true,
"operations": [
"get_member"
],
"description": "Get Member: their role ids. Use \"contains\" to test for one role.",
"items": {
"key": "role_id",
"type": "snowflake"
}
},
{
"key": "role_names",
"type": "array",
"optional": true,
"operations": [
"get_member"
],
"description": "Get Member: their role names. Use \"contains\" to test for one role.",
"items": {
"key": "role_name",
"type": "string"
}
},
{
"key": "top_role_id",
"type": "snowflake",
"optional": true,
"operations": [
"get_member"
],
"description": "Get Member: their highest role's id."
},
{
"key": "top_role_name",
"type": "string",
"optional": true,
"operations": [
"get_member"
],
"description": "Get Member: their highest role's name."
},
{
"key": "roles",
"type": "array",
"optional": true,
"operations": [
"list_roles"
],
"description": "List Roles: every role in the server, highest first.",
"items": {
"key": "role",
"type": "object",
"fields": [
{
"key": "id",
"type": "snowflake"
},
{
"key": "name",
"type": "string"
},
{
"key": "color",
"type": "string"
},
{
"key": "position",
"type": "number"
},
{
"key": "hoist",
"type": "boolean"
},
{
"key": "mentionable",
"type": "boolean"
},
{
"key": "managed",
"type": "boolean"
}
]
}
},
{
"key": "channel_type",
"type": "string",
"optional": true,
"operations": [
"get_channel"
],
"description": "Get Channel Info: \"text\", \"voice\", \"forum\"…"
},
{
"key": "channel_topic",
"type": "string",
"optional": true,
"operations": [
"get_channel"
],
"description": "Get Channel Info: the channel topic."
},
{
"key": "channel_nsfw",
"type": "boolean",
"optional": true,
"operations": [
"get_channel"
],
"description": "Get Channel Info: whether it is age-restricted."
},
{
"key": "channel_parent_id",
"type": "snowflake",
"optional": true,
"operations": [
"get_channel"
],
"description": "Get Channel Info: the category it sits in."
},
{
"key": "channel_position",
"type": "number",
"optional": true,
"operations": [
"get_channel"
],
"description": "Get Channel Info: its position in the sidebar."
},
{
"key": "channel_slowmode",
"type": "number",
"optional": true,
"operations": [
"get_channel"
],
"description": "Get Channel Info: slowmode delay, in seconds."
},
{
"key": "target_id",
"type": "snowflake",
"optional": true,
"operations": [
"set_channel_permission"
],
"description": "Set Channel Permission: the role or member the rule applies to."
},
{
"key": "target_type",
"type": "string",
"optional": true,
"operations": [
"set_channel_permission"
],
"description": "Set Channel Permission: \"role\" or \"member\"."
},
{
"key": "allow",
"type": "array",
"optional": true,
"operations": [
"set_channel_permission"
],
"description": "Set Channel Permission: the permissions that were granted.",
"items": {
"key": "permission",
"type": "string"
}
},
{
"key": "deny",
"type": "array",
"optional": true,
"operations": [
"set_channel_permission"
],
"description": "Set Channel Permission: the permissions that were blocked.",
"items": {
"key": "permission",
"type": "string"
}
},
{
"key": "poll_question",
"type": "string",
"optional": true,
"operations": [
"end_poll"
],
"description": "End Poll: the question that was asked."
},
{
"key": "poll_total_votes",
"type": "number",
"optional": true,
"operations": [
"end_poll"
],
"description": "End Poll: total votes across every answer."
},
{
"key": "poll_answers",
"type": "array",
"optional": true,
"operations": [
"end_poll"
],
"description": "End Poll: the final tally per answer.",
"items": {
"key": "answer",
"type": "object",
"fields": [
{
"key": "answer_id",
"type": "number"
},
{
"key": "text",
"type": "string"
},
{
"key": "vote_count",
"type": "number"
}
]
}
},
{
"key": "voters",
"type": "array",
"optional": true,
"operations": [
"get_poll_voters"
],
"description": "Get Poll Voters: who voted for the chosen answer.",
"items": {
"key": "voter",
"type": "object",
"fields": [
{
"key": "user_id",
"type": "snowflake"
},
{
"key": "username",
"type": "string"
}
]
}
},
{
"key": "voter_count",
"type": "number",
"optional": true,
"operations": [
"get_poll_voters"
],
"description": "Get Poll Voters: how many voters came back."
},
{
"key": "reactors",
"type": "array",
"optional": true,
"operations": [
"get_reactors"
],
"description": "Get Reactors: everyone who reacted with that emoji. The pool for a reaction giveaway.",
"items": {
"key": "reactor",
"type": "object",
"fields": [
{
"key": "user_id",
"type": "snowflake"
},
{
"key": "username",
"type": "string"
},
{
"key": "display_name",
"type": "string"
},
{
"key": "is_bot",
"type": "boolean"
}
]
}
},
{
"key": "reactor_count",
"type": "number",
"optional": true,
"operations": [
"get_reactors"
],
"description": "Get Reactors: how many came back."
},
{
"key": "pins",
"type": "array",
"optional": true,
"operations": [
"list_pins"
],
"description": "List Pinned Messages: the channel's pins, newest first.",
"items": {
"key": "pin",
"type": "object",
"fields": [
{
"key": "message_id",
"type": "snowflake"
},
{
"key": "content",
"type": "string"
},
{
"key": "author_id",
"type": "snowflake"
},
{
"key": "author",
"type": "string"
},
{
"key": "pinned_at",
"type": "timestamp"
},
{
"key": "jump_url",
"type": "url"
}
]
}
},
{
"key": "pin_count",
"type": "number",
"optional": true,
"operations": [
"list_pins"
],
"description": "List Pinned Messages: how many are pinned."
},
{
"key": "members",
"type": "array",
"optional": true,
"operations": [
"list_thread_members"
],
"description": "List Thread Members: who is in the thread.",
"items": {
"key": "member",
"type": "object",
"fields": [
{
"key": "user_id",
"type": "snowflake"
},
{
"key": "joined_at",
"type": "timestamp"
}
]
}
},
{
"key": "member_count",
"type": "number",
"optional": true,
"operations": [
"list_thread_members"
],
"description": "List Thread Members: how many are in it."
},
{
"key": "threads",
"type": "array",
"optional": true,
"operations": [
"list_archived_threads"
],
"description": "List Archived Threads: the channel's archived public threads.",
"items": {
"key": "thread",
"type": "object",
"fields": [
{
"key": "thread_id",
"type": "snowflake"
},
{
"key": "thread_name",
"type": "string"
},
{
"key": "archived_at",
"type": "timestamp"
},
{
"key": "message_count",
"type": "number"
}
]
}
},
{
"key": "threads",
"type": "array",
"optional": true,
"operations": [
"list_active_threads"
],
"description": "List Active Threads: active threads in the server.",
"items": {
"key": "thread",
"type": "object",
"fields": [
{
"key": "thread_id",
"type": "snowflake"
},
{
"key": "thread_name",
"type": "string"
},
{
"key": "parent_id",
"type": "discord.channel.id"
},
{
"key": "message_count",
"type": "number"
},
{
"key": "archived",
"type": "boolean"
}
]
}
},
{
"key": "has_more",
"type": "boolean",
"optional": true,
"operations": [
"list_archived_threads"
],
"description": "List Archived Threads: whether older ones remain unread."
},
{
"key": "target_channel_id",
"type": "snowflake",
"optional": true,
"operations": [
"follow_channel"
],
"description": "Follow Announcement Channel: where the posts are republished.",
"bindingRole": "selected_target"
},
{
"key": "guild_name",
"type": "string",
"optional": true,
"operations": [
"get_guild_info"
],
"description": "Get Server Info: the server's name."
},
{
"key": "description",
"type": "string",
"optional": true,
"operations": [
"get_guild_info"
],
"description": "Get Server Info: the server description."
},
{
"key": "icon",
"type": "url",
"optional": true,
"operations": [
"get_guild_info"
],
"description": "Get Server Info: the server icon."
},
{
"key": "created_at",
"type": "timestamp",
"optional": true,
"operations": [
"get_guild_info",
"get_user"
],
"description": "When the server or user account was created."
},
{
"key": "member_count",
"type": "number",
"optional": true,
"operations": [
"get_guild_info",
"list_members",
"search_members"
],
"description": "How many members the server has, or how many the read returned."
},
{
"key": "owner_id",
"type": "snowflake",
"optional": true,
"operations": [
"get_guild_info"
],
"description": "Get Server Info: who owns the server."
},
{
"key": "boost_tier",
"type": "number",
"optional": true,
"operations": [
"get_guild_info"
],
"description": "Get Server Info: the boost level (0-3)."
},
{
"key": "boost_count",
"type": "number",
"optional": true,
"operations": [
"get_guild_info"
],
"description": "Get Server Info: how many boosts it has."
},
{
"key": "verification_level",
"type": "string",
"optional": true,
"operations": [
"get_guild_info"
],
"description": "Get Server Info: the current verification level."
},
{
"key": "members",
"type": "array",
"optional": true,
"operations": [
"list_members",
"search_members"
],
"description": "List / Search Members: the members that came back.",
"items": {
"key": "member",
"type": "object",
"fields": [
{
"key": "member_id",
"type": "snowflake"
},
{
"key": "username",
"type": "string"
},
{
"key": "display_name",
"type": "string"
},
{
"key": "joined_at",
"type": "timestamp"
},
{
"key": "is_bot",
"type": "boolean"
},
{
"key": "role_ids",
"type": "array",
"items": {
"key": "role_id",
"type": "snowflake"
}
}
]
}
},
{
"key": "channels",
"type": "array",
"optional": true,
"operations": [
"list_channels"
],
"description": "List Channels: every channel in the server.",
"items": {
"key": "channel",
"type": "object",
"fields": [
{
"key": "channel_id",
"type": "snowflake"
},
{
"key": "channel_name",
"type": "string"
},
{
"key": "channel_type",
"type": "string"
},
{
"key": "parent_id",
"type": "snowflake"
},
{
"key": "position",
"type": "number"
}
]
}
},
{
"key": "is_banned",
"type": "boolean",
"optional": true,
"operations": [
"check_ban"
],
"description": "Check If Banned: false rather than an error when they are not banned."
},
{
"key": "reason",
"type": "string",
"optional": true,
"operations": [
"check_ban"
],
"description": "Check If Banned: the recorded reason, if any."
},
{
"key": "entries",
"type": "array",
"optional": true,
"operations": [
"list_audit_log"
],
"description": "Read Audit Log: recent administrative actions, newest first.",
"items": {
"key": "entry",
"type": "object",
"fields": [
{
"key": "entry_id",
"type": "snowflake"
},
{
"key": "action",
"type": "string"
},
{
"key": "executor_id",
"type": "snowflake"
},
{
"key": "target_id",
"type": "snowflake"
},
{
"key": "reason",
"type": "string"
},
{
"key": "created_at",
"type": "timestamp"
}
]
}
},
{
"key": "entry_count",
"type": "number",
"optional": true,
"operations": [
"list_audit_log"
],
"description": "Read Audit Log: how many entries came back."
},
{
"key": "thread_count",
"type": "number",
"optional": true,
"operations": [
"list_active_threads"
],
"description": "List Active Threads: how many are open."
},
{
"key": "banned",
"type": "number",
"optional": true,
"operations": [
"bulk_ban"
],
"description": "Ban Multiple Members: how many were banned."
},
{
"key": "failed",
"type": "number",
"optional": true,
"operations": [
"bulk_ban"
],
"description": "Ban Multiple Members: how many could not be (already banned, higher role, gone)."
},
{
"key": "banned_ids",
"type": "array",
"optional": true,
"operations": [
"bulk_ban"
],
"description": "Ban Multiple Members: the ids that were actually banned.",
"items": {
"key": "user_id",
"type": "snowflake",
"bindingRole": "selected_target"
},
"bindingRole": "selected_target"
},
{
"key": "enabled",
"type": "boolean",
"optional": true,
"operations": [
"update_automod_rule"
],
"description": "Update AutoMod Rule: whether the rule is now on."
},
{
"key": "channel_id",
"type": "discord.channel.id",
"label": "Channel used by this action",
"bindingRole": "selected_target",
"operations": [
"send_message",
"send_embed",
"send_dm",
"get_channel",
"set_channel_permission",
"follow_channel"
]
}
]Examples and troubleshooting have not yet been reviewed for this contract.
Version and compatibility
This reference follows the current authoring contract. Existing workflows retain their saved node revisions.
Contract identifier
222191645e353d72e305a481cfe8a0b61ccc7fbae653eac29b5ea1066c66238f