Automate Discord + Slack
Community chat with an automation-friendly API. Team chat where operations actually surface. Put an agent between them and the hand-off stops being manual: it reads, decides, acts, and shows its work.
Support First Responder already works across Discord and Slack — free, and it runs on your machine.
Automations teams run
Unlike field-mapping automation, the step in the middle is an agent: it can summarise, classify, judge and draft, not merely copy values from Discord into Slack.
When a message posts in a channel in Discord…
…an agent can post a rich channel message in Slack — after reading the context and deciding it should.
When a member joins in Discord…
…an agent can DM a teammate in Slack — after reading the context and deciding it should.
When a keyword appears in Discord…
…an agent can open a thread with findings in Slack — after reading the context and deciding it should.
When a message hits a channel in Slack…
…an agent can post channel messages in Discord — with the reasoning recorded in the run’s receipt.
When a keyword or mention fires in Slack…
…an agent can DM members in Discord — with the reasoning recorded in the run’s receipt.
When a reaction is added in Slack…
…an agent can publish digests in Discord — with the reasoning recorded in the run’s receipt.
The Discord and Slack hand-off, setup template
Start with the discord-api node and the slack-api node. Configure the Discord source payload, the agent input, and the Slack operation. The sequential template does not implement conditional writes or approval by itself.
This is a schema-checked starting point, not an end-to-end tested automation. Replace every CONFIGURE_ value, choose the operations you intend, connect credentials and map source outputs into later inputs. An edge orders steps; it does not supply a condition, an approval gate or a field mapping. Add and test those controls explicitly before any write. Cloud APIs and model providers may receive data. Keep the workflow inactive until tested with fixtures.
{
"id": "ecac7900-264b-4bac-aac0-9bca6ec7c748",
"name": "Discord → Slack",
"nodes": [
{
"id": "0230c22f-920c-43df-a3d3-e380d521b232",
"text": "Watch Discord",
"x": 512,
"y": 144,
"isEditing": false,
"type": "receive-discord-message",
"icon": "connect",
"category": "trigger",
"isSelected": false,
"parameters": {
"channelId": "CONFIGURE_CHANNELID"
},
"description": "Setup template for Receive Discord Message. Listen for incoming Discord messages in a specified channel and trigger the workflow when a new message is received. Configure credentials, inputs and output mapping before use.",
"error": null,
"isActive": false,
"output": null,
"outputs": {}
},
{
"id": "94f9d7a7-1e22-4094-a6a1-6dd5e098d480",
"text": "Review source and draft",
"x": 512,
"y": 336,
"isEditing": false,
"type": "agnt-agent",
"icon": "connect",
"category": "action",
"isSelected": false,
"parameters": {
"agentId": "CONFIGURE_AGENTID",
"message": "Read the Discord item. Decide whether it warrants action in Slack, and explain why.\nSource input: CONFIGURE_SOURCE_INPUT. Produce a reviewable draft only; do not take external actions."
},
"description": "Setup template for Agent Chat. Chat with an AI agent from your agent library. Select an agent and send messages to interact with it within your workflow. Configure credentials, inputs and output mapping before use.",
"error": null,
"isActive": false,
"output": null,
"outputs": {}
},
{
"id": "ec36b269-f43f-4146-a088-68fdac8b0dd0",
"text": "Configure destination in Slack",
"x": 512,
"y": 528,
"isEditing": false,
"type": "slack-api",
"icon": "connect",
"category": "action",
"isSelected": false,
"parameters": {
"action": "SEND_MESSAGE",
"channelId": "CONFIGURE_CHANNELID",
"message": "CONFIGURE_MESSAGE"
},
"description": "Setup template for Slack API. Interact with Slack to perform various operations such as sending messages, uploading files, managing reactions, and more. Configure credentials, inputs and output mapping before use.",
"error": null,
"isActive": false,
"output": null,
"outputs": {}
}
],
"edges": [
{
"id": "e24e9655-5dea-4403-a529-9734f4c59142",
"start": {
"id": "0230c22f-920c-43df-a3d3-e380d521b232",
"type": "output"
},
"end": {
"id": "94f9d7a7-1e22-4094-a6a1-6dd5e098d480",
"type": "input"
},
"startX": 800,
"startY": 168,
"endX": 512,
"endY": 360
},
{
"id": "58390f2f-ea09-44af-a1d0-268021a6e5ae",
"start": {
"id": "94f9d7a7-1e22-4094-a6a1-6dd5e098d480",
"type": "output"
},
"end": {
"id": "ec36b269-f43f-4146-a088-68fdac8b0dd0",
"type": "input"
},
"startX": 800,
"startY": 360,
"endX": 512,
"endY": 552
}
],
"zoomLevel": 1,
"canvasOffsetX": 0,
"canvasOffsetY": 0,
"isTinyNodeMode": false
}
Configure Receive Discord Message
Listen for incoming Discord messages in a specified channel and trigger the workflow when a new message is received.
- channelId — The ID of the Discord channel to monitor Current example:
CONFIGURE_CHANNELID.
Configure Slack API
Interact with Slack to perform various operations such as sending messages, uploading files, managing reactions, and more.
- action — The action to perform on Slack Current example:
SEND_MESSAGE. - channelId — The ID of the Slack channel Current example:
CONFIGURE_CHANNELID. - message — The message to send Current example:
CONFIGURE_MESSAGE.
Install Support First Responder
Support First Responder already uses both Discord and Slack, so installing it gives you this exact hand-off wired up — connected, editable, and running on your own machine.
Runs on your own machine · See what it does
Build it in AGNT
- Install AGNT — it runs on your own machine and needs no account to start.
- Authorise Slack (one OAuth sign-in) and Discord (an API key pasted into the vault). Nothing is stored anywhere but your disk.
- Describe the job in plain language, or paste the definition above; discord-api does the reading and slack-api the writing.
- Gate anything you would not want done unattended, then let it run and read the first receipt end to end.
Discord and Slack — common questions
Can I connect Discord to Slack without writing code?
You can build it entirely from the canvas. Authorise Discord with an API key pasted into the vault, Slack with one OAuth sign-in, then tell the agent what community questions answered from your docs should look like once Slack is involved. Code is an option for the unusual cases, never a requirement for the common ones.
How is this different from a field-mapping Discord to Slack automation?
A field mapping copies values and breaks on the first record nobody anticipated. The middle step here reads the Discord item in full and decides — whether it matters, how to summarise it, and what belongs in Slack. Deciding to do nothing is a valid outcome, which no mapping can express.
Does my Discord and Slack data leave my machine?
AGNT Community Core is local-first, so there is no vendor middleman holding your Discord or Slack tokens. The runtime talks directly to both services. Choose a local model and the content of what it reads never leaves the machine at all.
What does a Discord and Slack run leave behind?
A receipt: what was read in Discord, which tools ran with which arguments, what the agent concluded, and what it wrote to Slack. Anything consequential can sit behind an approval gate so a person signs off before it happens.