n8n-workflows/workflows/2105_workflow_2105.json
2025-05-14 11:58:29 +03:00

563 lines
14 KiB
JSON

{
"meta": {
"instanceId": "257476b1ef58bf3cb6a46e65fac7ee34a53a5e1a8492d5c6e4da5f87c9b82833",
"templateId": "2105"
},
"nodes": [
{
"id": "3abfbefa-0a41-4dd2-a79b-99aa02447a6f",
"name": "When clicking \"Test workflow\"",
"type": "n8n-nodes-base.manualTrigger",
"position": [
380,
240
],
"parameters": {},
"typeVersion": 1
},
{
"id": "5233daa6-9b3f-4048-8187-b78decac0bbd",
"name": "Delete ID",
"type": "n8n-nodes-base.googleSheets",
"position": [
1900,
380
],
"parameters": {
"operation": "delete",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lj15jPOKrfS0-EAnCmths4-SVXwQJ78eBnq8C4DFRx4/edit#gid=0",
"cachedResultName": "Last Member"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "={{ $('Setup: Edit this to get started').first().json['Google Sheets URL'] }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "9",
"name": "Nik's Google"
}
},
"executeOnce": true,
"typeVersion": 4.2,
"alwaysOutputData": true
},
{
"id": "d3be48cd-9652-43ea-9bbf-d9d3a6c972ae",
"name": "SaveID",
"type": "n8n-nodes-base.googleSheets",
"position": [
2040,
380
],
"parameters": {
"columns": {
"value": {
"ID": "={{ $('Merge').last().json.user.id }}"
},
"schema": [
{
"id": "ID",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "ID",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"ID"
]
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lj15jPOKrfS0-EAnCmths4-SVXwQJ78eBnq8C4DFRx4/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "={{ $('Setup: Edit this to get started').first().json['Google Sheets URL'] }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "9",
"name": "Nik's Google"
}
},
"typeVersion": 4.2
},
{
"id": "a8cb3b10-1143-4467-936c-36ea29c3489a",
"name": "Get ID",
"type": "n8n-nodes-base.googleSheets",
"position": [
920,
240
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lj15jPOKrfS0-EAnCmths4-SVXwQJ78eBnq8C4DFRx4/edit#gid=0",
"cachedResultName": "Last Member"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "={{ $('Setup: Edit this to get started').first().json['Google Sheets URL'] }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "9",
"name": "Nik's Google"
}
},
"typeVersion": 4.2,
"alwaysOutputData": true
},
{
"id": "82bdeec7-5ff5-4ed5-8c57-f3007bd7f81e",
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
1520,
240
],
"parameters": {},
"typeVersion": 2.1
},
{
"id": "19247435-e0b0-4eac-8807-cb9e4ac532ab",
"name": "Check if we have more members left",
"type": "n8n-nodes-base.if",
"position": [
1740,
240
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "11bd5681-d979-40a8-ba0c-8c697532cf0d",
"operator": {
"type": "number",
"operation": "lt"
},
"leftValue": "={{ $input.all().length }}",
"rightValue": 100
}
]
}
},
"typeVersion": 2
},
{
"id": "9845c82b-942e-4265-be8c-c4b1a9199b1e",
"name": "We're done",
"type": "n8n-nodes-base.noOp",
"position": [
2040,
160
],
"parameters": {},
"typeVersion": 1
},
{
"id": "86bf2fe1-22b3-4563-a4b7-b3603f96cada",
"name": "Check if we have an ID",
"type": "n8n-nodes-base.if",
"position": [
1100,
240
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "8cabfe61-be13-462f-a8ce-99ba5304fa10",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.ID }}",
"rightValue": ""
}
]
}
},
"executeOnce": true,
"typeVersion": 2
},
{
"id": "96324abb-2464-418a-850f-c6f8d3ce209f",
"name": "Filter to only include members with role",
"type": "n8n-nodes-base.filter",
"position": [
1740,
-80
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "cac0aeae-ff45-4717-b11e-4e19995649fe",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $json.roles.filter(role => role === $('Setup: Edit this to get started').first().json['Role ID']).length }}",
"rightValue": 0
}
]
}
},
"typeVersion": 2
},
{
"id": "bc012053-c619-479b-8bcb-9325c209d999",
"name": "Get First 100 Members",
"type": "n8n-nodes-base.discord",
"position": [
1300,
260
],
"parameters": {
"guildId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Setup: Edit this to get started').first().json['Discord ID'] }}"
},
"options": {
"simplify": true
},
"resource": "member"
},
"credentials": {
"discordBotApi": {
"id": "M7ApR1tTlF4HFHn4",
"name": "Discord Bot account"
}
},
"typeVersion": 2
},
{
"id": "7214e807-5a51-438d-9db8-32821307f4ea",
"name": "Get next 100 Members after last ID",
"type": "n8n-nodes-base.discord",
"position": [
1300,
80
],
"parameters": {
"after": "={{ $('Get ID').first().json.ID }}",
"guildId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Setup: Edit this to get started').first().json['Discord ID'] }}"
},
"options": {
"simplify": true
},
"resource": "member"
},
"credentials": {
"discordBotApi": {
"id": "M7ApR1tTlF4HFHn4",
"name": "Discord Bot account"
}
},
"typeVersion": 2
},
{
"id": "158d3e7a-cc8c-4ab3-b59f-5a2251c79613",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
517,
-60.44028103044491
],
"parameters": {
"color": 5,
"width": 350.3145253526498,
"height": 491.3512880562059,
"content": "## Setup\n1. Add your Google Sheets and Discord credentials.\n2. Create a Google Sheets document that contains `ID` as a column. We're using this to remember which member we received last.\n3. Edit the fields in the setup node `Setup: Edit this to get started`. *You can read up on how to get the Discord IDs via [this link](https://www.pythondiscord.com/pages/guides/pydis-guides/contributing/obtaining-discord-ids/).*\n4. Link to your Discord server in the Discord nodes\n5. Activate the workflow\n6. Call the production webhook URL in your browser"
},
"typeVersion": 1
},
{
"id": "11926dbb-a5e0-48f9-8453-7dc21ecf6717",
"name": "Setup: Edit this to get started",
"type": "n8n-nodes-base.set",
"position": [
640,
240
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "7c8cce4f-1330-425a-baff-4c40320f2335",
"name": "Role ID",
"type": "string",
"value": "<Enter your roleID here>"
},
{
"id": "8533b358-d8e6-4eba-9159-f6bdd2e0df65",
"name": "Google Sheets URL",
"type": "string",
"value": "<Enter your Sheets URL here>"
},
{
"id": "bb87e6f5-def9-4625-818a-ce6ff7b44ed7",
"name": "Discord ID",
"type": "string",
"value": "<Enter your server/guild ID here>"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "334377fc-ddb8-4c0d-9ddc-f6949b98578c",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"disabled": true,
"position": [
380,
420
],
"webhookId": "b40c1140-75a7-481e-b8c7-789eef1f8bac",
"parameters": {
"path": "discord-template",
"options": {},
"responseMode": "responseNode"
},
"typeVersion": 1.1
},
{
"id": "8fac2863-a046-4ce7-8391-72486141ea98",
"name": "Send Response",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
1960,
-80
],
"parameters": {
"options": {},
"respondWith": "allIncomingItems"
},
"typeVersion": 1
},
{
"id": "10677a2d-9bcb-4b51-8cab-a49c7f16a8d7",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1900,
-180
],
"parameters": {
"color": 7,
"height": 265.6674473067916,
"content": "You can replace this node according to your use case. In my case, I've send a DM to all users"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"Merge": {
"main": [
[
{
"node": "Check if we have more members left",
"type": "main",
"index": 0
},
{
"node": "Filter to only include members with role",
"type": "main",
"index": 0
}
]
]
},
"Get ID": {
"main": [
[
{
"node": "Check if we have an ID",
"type": "main",
"index": 0
}
]
]
},
"SaveID": {
"main": [
[
{
"node": "Get ID",
"type": "main",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "Setup: Edit this to get started",
"type": "main",
"index": 0
}
]
]
},
"Delete ID": {
"main": [
[
{
"node": "SaveID",
"type": "main",
"index": 0
}
]
]
},
"Get First 100 Members": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Check if we have an ID": {
"main": [
[
{
"node": "Get next 100 Members after last ID",
"type": "main",
"index": 0
}
],
[
{
"node": "Get First 100 Members",
"type": "main",
"index": 0
}
]
]
},
"When clicking \"Test workflow\"": {
"main": [
[
{
"node": "Setup: Edit this to get started",
"type": "main",
"index": 0
}
]
]
},
"Setup: Edit this to get started": {
"main": [
[
{
"node": "Get ID",
"type": "main",
"index": 0
}
]
]
},
"Check if we have more members left": {
"main": [
[
{
"node": "We're done",
"type": "main",
"index": 0
}
],
[
{
"node": "Delete ID",
"type": "main",
"index": 0
}
]
]
},
"Get next 100 Members after last ID": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Filter to only include members with role": {
"main": [
[
{
"node": "Send Response",
"type": "main",
"index": 0
}
]
]
}
}
}