Describe behavior
Say when, where, and what should happen. For example: welcome new members and give them the member role.
Start with a welcome for new members. We'll help you adapt an example to your server, test it, and publish it. You can also ask AI for a draft or build your own from scratch.
Try the basics · about 3 minutesNo login or Bot installation needed. Opens in a new tab. Your current Bot stays unchanged.When someone joins, your bot sends a greeting to the channel you choose. The steps are already connected: just adapt the destination and message to your server.
A member joinsSend a welcomeTest without sendingPublish & enableSign in with Discord and choose a server at the top. If needed, use Install Bot to connect DPalette. Open Examples and load the Welcome example.
In the example's setup screen, pick the channel where you want the greeting to appear. You do not need to look up or type a channel ID.
Select Send Message and edit its content in the right panel. Use Insert value to choose a mention of the member who joined.
Use Validate to check the settings and Test run to inspect the planned message. When you are happy with it, save the draft and choose Publish & enable.
Tell AI what your bot should do, such as posting in your updates channel when a stream starts. It combines DPalette's features into a proposal for you to review before use.
Say when, where, and what should happen. For example: welcome new members and give them the member role.
When a channel, role, or member is needed, select it from your Discord server instead of copying IDs by hand.
Check the assumptions and warnings, then apply the proposal to the editing area. Every step stays editable. Check destinations and permissions, and test before publishing.
Applying a proposal only changes your unsaved work. It does not automatically save, test, publish, or run anything live. DPalette does not read or send your saved API keys (Secrets) or database records to AI.
Here are seven steps to build the same welcome behavior from scratch. Connect what should happen to the event that starts it.
Sign in, then choose the Discord server you want to edit. Use Install Bot if DPalette is not there yet. Newly created servers appear after Refresh servers.
Drag Member Joined from the step library into the editing area. This is the event that starts your bot's behavior.
Add Send Message. This is the action that runs after the event.
Connect the solid wire from Member Joined’s next port to Send Message’s input port.
Set the channel and message. Use Insert value to pick the new member’s mention.
Fix the issues shown under Validate. Then use a test run (Dry Run) to check what would happen without making real Discord changes.
Save the draft and choose Publish & enable after validation passes. Your bot will start responding to Discord events with the behavior you published.
Your draft is separate from the version running on your server. Your live bot keeps its current behavior until you publish the changes.
Use Validate to check missing connections, required settings, permissions, and more. Fix the reported issues before continuing.
A test run (Dry Run) checks the behavior without writing to Discord. You can see which steps ran and what they would have sent.
Publish the draft you reviewed to use it on your server. That version keeps running while you edit the next change.
Review risk labels and execution limits for deletion actions. Start on a test server and confirm behavior with Dry Run.
Execution order and data are separate. Keeping those jobs distinct makes larger workflows easier to follow.
Controls which node runs next. Branches such as true and false are Flow wires too.
Passes values such as messages and members into typed input ports. Only compatible types connect.
joinThe first segment of a value reference. In this guide, the Member Joined node has the ID join.
Finish the execution order with solid Flow wires first, then add the dashed Data wires you need.
Most action fields—including messages, URLs, numbers, lists and choices—can reuse outputs from earlier steps. Suggestions follow your current workflow. Trigger setup and other fixed settings are excluded.
{{ join.member.mention }}!Use the small {} button beside a field (Insert value), or Ctrl+Space. In text fields you can also type {{. Choose a suggestion to insert {{ node-id.output.property }}. Use arrow keys, Enter, and Escape to navigate.
| Example path | Value |
|---|---|
join.member.mention | Discord mention for the member who joined |
join.guild.member_count | Current server member count after this member joined (including bots) |
join.member.display_name | Display name of the member who joined |
message.message.content | Content of the received message |
message.author.mention | Discord mention for the message author |
manual.payload.target_user | A target_user field defined by a Manual Action |
webhook.body | Incoming Webhook request body |
schedule.scheduled_at | Time at which a Schedule fired |
Prefixes such as join, message, and manual are node IDs. Your suggestions use the IDs on your canvas. The source node must run before the node that reads its output.
Secrets are optional server-scoped values for external API keys, tokens, and other credentials. Ordinary presets, including YouTube notifications, do not require them.
Choose a server, open Safety, and save a name and value under Secrets. Names such as api_key or github_token make their purpose clear.
Use {{ secret.name }} in a text-capable node setting. For a secret named api_key, write {{ secret.api_key }}.
Secrets are useful in HTTP Request headers, query parameters, and bodies when an external service requires authentication.
DPalette does not show a secret value again after saving it and redacts it from stored execution details. Save a new value under the same name when you need to rotate it.
DPalette can create Manual Actions that run immediately from an input form, not only automations that wait for events. The same workflow can also be exposed as a Discord slash command.
Manual Trigger→Publish→Actions / /command→Execution HistoryStart with a Manual Trigger, define fields such as target_user or a limit, and connect the actions that should follow. Test drafts in the Test panel; validate and publish before using the action in production.
Published Manual Actions appear as generated input forms under Actions. Inspect effects with Dry Run first, then use Run Now for non-destructive work or Review & Run for destructive operations such as deletion.
Enable the slash command in the trigger settings to sync a guild-scoped command with the same inputs. Example: /purge-user target_user:@spammer. Commands sync after publishing and can be resynced from Actions.
Actions and Discord commands share the Workflow Executor, execution limits, concurrency controls, and Execution History. Dry Run does not consume production quota, and only a published revision can execute live.
Most problems come down to connections, execution order, or Discord permissions.
Make sure another node with outputs exists on the canvas. A node’s own outputs are intentionally not suggested in its settings.
The server list is captured when you sign in. Use Refresh servers in the editor so Discord can issue a new snapshot, then pick the new server.
The typed path does not match the real node ID or output. Pick it again from Insert value.
Make sure the source node runs earlier on the same Flow branch.
Review required permissions and Gateway Intents under Validate, plus the Bot role order, channel permissions, and Developer Portal settings.
Choose Welcome from the examples, and put your server's personality into the message.
Open examples →