n8n-nodes-discord-dnd 0.1.11 → 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/nodes/src/discord-trigger/index.d.ts +1 -1
- package/dist/nodes/src/discord-trigger/index.js +43 -40
- package/dist/nodes/src/discord-trigger/index.js.map +1 -1
- package/dist/nodes/src/discord-trigger/node-description.js +32 -42
- package/dist/nodes/src/discord-trigger/node-description.js.map +1 -1
- package/package.json +1 -1
@@ -1,4 +1,4 @@
|
|
1
|
-
import { INodeType, ITriggerFunctions, ITriggerResponse, ILoadOptionsFunctions, INodePropertyOptions } from
|
1
|
+
import { INodeType, ITriggerFunctions, ITriggerResponse, ILoadOptionsFunctions, INodePropertyOptions } from 'n8n-workflow';
|
2
2
|
/**
|
3
3
|
* Discord Trigger node for n8n
|
4
4
|
* This is the main entry point for the node
|
@@ -14,16 +14,16 @@ class DiscordTrigger {
|
|
14
14
|
this.methods = {
|
15
15
|
loadOptions: {
|
16
16
|
async getServers() {
|
17
|
-
const credentials =
|
17
|
+
const credentials = await this.getCredentials('discordApi');
|
18
18
|
const client = await (0, client_1.initializeDiscordClient)(credentials.botToken);
|
19
19
|
// Wait for client to be ready
|
20
20
|
await new Promise((resolve) => {
|
21
21
|
if (client.isReady())
|
22
22
|
resolve();
|
23
23
|
else
|
24
|
-
client.once(
|
24
|
+
client.once('ready', () => resolve());
|
25
25
|
});
|
26
|
-
const servers = client.guilds.cache.map(
|
26
|
+
const servers = client.guilds.cache.map(guild => ({
|
27
27
|
name: guild.name,
|
28
28
|
value: guild.id,
|
29
29
|
description: `Server ID: ${guild.id}`,
|
@@ -36,37 +36,36 @@ class DiscordTrigger {
|
|
36
36
|
};
|
37
37
|
}
|
38
38
|
async trigger() {
|
39
|
-
const credentials =
|
40
|
-
//
|
41
|
-
const resource = this.getNodeParameter("resource", "message");
|
42
|
-
const event = this.getNodeParameter("event", "messageCreate");
|
43
|
-
// Extract other parameters as before
|
39
|
+
const credentials = await this.getCredentials('discordApi');
|
40
|
+
// Extract parameters from node configuration
|
44
41
|
const parameters = {
|
45
|
-
|
46
|
-
|
47
|
-
|
42
|
+
// Get core parameters
|
43
|
+
triggerType: this.getNodeParameter('triggerType', 'messageContent'),
|
44
|
+
includeBotMessages: this.getNodeParameter('includeBotMessages', false),
|
45
|
+
// Get filter parameters
|
46
|
+
filterByServers: this.getNodeParameter('filterByServers', false),
|
48
47
|
serverIds: [],
|
49
|
-
filterByChannels: this.getNodeParameter(
|
48
|
+
filterByChannels: this.getNodeParameter('filterByChannels', false),
|
50
49
|
channelIds: [],
|
51
|
-
filterByRoles: this.getNodeParameter(
|
50
|
+
filterByRoles: this.getNodeParameter('filterByRoles', false),
|
52
51
|
roleIds: [],
|
53
52
|
};
|
54
53
|
// Process server filter parameters
|
55
54
|
if (parameters.filterByServers) {
|
56
|
-
parameters.serverFilterMethod = this.getNodeParameter(
|
55
|
+
parameters.serverFilterMethod = this.getNodeParameter('serverFilterMethod', 'fromList');
|
57
56
|
switch (parameters.serverFilterMethod) {
|
58
|
-
case
|
59
|
-
parameters.serverIds = this.getNodeParameter(
|
57
|
+
case 'fromList':
|
58
|
+
parameters.serverIds = this.getNodeParameter('serverIds', []);
|
60
59
|
break;
|
61
|
-
case
|
62
|
-
const url = this.getNodeParameter(
|
63
|
-
const serverIdFromUrl = url.split(
|
60
|
+
case 'byUrl':
|
61
|
+
const url = this.getNodeParameter('serverUrl', '');
|
62
|
+
const serverIdFromUrl = url.split('/').pop();
|
64
63
|
if (serverIdFromUrl) {
|
65
64
|
parameters.serverIds = [serverIdFromUrl];
|
66
65
|
}
|
67
66
|
break;
|
68
|
-
case
|
69
|
-
const serverId = this.getNodeParameter(
|
67
|
+
case 'byId':
|
68
|
+
const serverId = this.getNodeParameter('serverId', '');
|
70
69
|
if (serverId) {
|
71
70
|
parameters.serverIds = [serverId];
|
72
71
|
}
|
@@ -74,40 +73,44 @@ class DiscordTrigger {
|
|
74
73
|
}
|
75
74
|
}
|
76
75
|
if (parameters.filterByChannels) {
|
77
|
-
parameters.channelIds = this.getNodeParameter(
|
78
|
-
.split(
|
79
|
-
.map(
|
76
|
+
parameters.channelIds = this.getNodeParameter('channelIds', '')
|
77
|
+
.split(',')
|
78
|
+
.map(id => id.trim());
|
80
79
|
}
|
81
80
|
if (parameters.filterByRoles) {
|
82
|
-
parameters.roleIds = this.getNodeParameter(
|
83
|
-
.split(
|
84
|
-
.map(
|
81
|
+
parameters.roleIds = this.getNodeParameter('roleIds', '')
|
82
|
+
.split(',')
|
83
|
+
.map(id => id.trim());
|
85
84
|
}
|
86
85
|
// Get trigger-specific parameters
|
87
|
-
if (parameters.triggerType ===
|
88
|
-
parameters.matchPattern = this.getNodeParameter(
|
89
|
-
if ([
|
90
|
-
parameters.matchValue = this.getNodeParameter(
|
91
|
-
parameters.caseSensitive = this.getNodeParameter(
|
86
|
+
if (parameters.triggerType === 'messageContent') {
|
87
|
+
parameters.matchPattern = this.getNodeParameter('matchPattern', '');
|
88
|
+
if (['contains', 'endsWith', 'equals', 'startsWith'].includes(parameters.matchPattern)) {
|
89
|
+
parameters.matchValue = this.getNodeParameter('matchValue', '');
|
90
|
+
parameters.caseSensitive = this.getNodeParameter('caseSensitive', false);
|
92
91
|
}
|
93
|
-
else if (parameters.matchPattern ===
|
94
|
-
parameters.regexPattern = this.getNodeParameter(
|
92
|
+
else if (parameters.matchPattern === 'regex') {
|
93
|
+
parameters.regexPattern = this.getNodeParameter('regexPattern', '');
|
95
94
|
}
|
96
95
|
}
|
97
|
-
else if (parameters.triggerType ===
|
98
|
-
parameters.interactionType = this.getNodeParameter(
|
96
|
+
else if (parameters.triggerType === 'botInteraction') {
|
97
|
+
parameters.interactionType = this.getNodeParameter('interactionType', 'botMentioned');
|
99
98
|
}
|
100
|
-
// Initialize Discord client
|
99
|
+
// Initialize Discord client and set up event handlers
|
101
100
|
const client = await (0, client_1.initializeDiscordClient)(credentials.botToken);
|
101
|
+
// Set up response data with manual trigger function
|
102
102
|
const responseData = {
|
103
103
|
manualTriggerFunction: async () => {
|
104
|
+
// This function will be executed when the workflow is manually triggered
|
105
|
+
// Don't need to do anything here as we only want the workflow to be triggered by Discord events
|
104
106
|
return;
|
105
107
|
},
|
106
108
|
};
|
107
|
-
//
|
108
|
-
(0, event_handlers_1.
|
109
|
+
// Set up message event handler
|
110
|
+
(0, event_handlers_1.setupMessageEventHandler)(client, this, parameters);
|
111
|
+
// Function to clean up when node is deactivated
|
109
112
|
const closeFunction = async () => {
|
110
|
-
console.log(
|
113
|
+
console.log('Disconnecting from Discord...');
|
111
114
|
client.destroy();
|
112
115
|
};
|
113
116
|
return {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../nodes/src/discord-trigger/index.ts"],"names":[],"mappings":";;;AAQA,qCAAmD;AACnD,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../nodes/src/discord-trigger/index.ts"],"names":[],"mappings":"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"}
|
@@ -8,7 +8,9 @@ exports.nodeDescription = {
|
|
8
8
|
group: ["trigger"],
|
9
9
|
version: 1,
|
10
10
|
description: "Starts the workflow when Discord events occur",
|
11
|
-
defaults: {
|
11
|
+
defaults: {
|
12
|
+
name: "Discord Trigger",
|
13
|
+
},
|
12
14
|
inputs: [],
|
13
15
|
outputs: ["main"],
|
14
16
|
credentials: [
|
@@ -19,60 +21,48 @@ exports.nodeDescription = {
|
|
19
21
|
],
|
20
22
|
properties: [
|
21
23
|
{
|
22
|
-
displayName: "
|
23
|
-
name: "
|
24
|
+
displayName: "Trigger Type",
|
25
|
+
name: "triggerType",
|
24
26
|
type: "options",
|
25
27
|
options: [
|
26
|
-
{
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
{
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
{ name: "Interaction", value: "interaction" },
|
37
|
-
{ name: "Bot Status", value: "botStatus" },
|
38
|
-
{ name: "User", value: "user" },
|
39
|
-
{ name: "Auto Moderation", value: "autoModeration" },
|
40
|
-
{ name: "Poll", value: "poll" },
|
41
|
-
{ name: "Other", value: "other" },
|
28
|
+
{
|
29
|
+
name: "Message Content",
|
30
|
+
value: "messageContent",
|
31
|
+
description: "Triggered based on message content patterns",
|
32
|
+
},
|
33
|
+
{
|
34
|
+
name: "Bot Interaction",
|
35
|
+
value: "botInteraction",
|
36
|
+
description: "Triggered when users interact with the bot",
|
37
|
+
},
|
42
38
|
],
|
43
|
-
default: "
|
39
|
+
default: "messageContent",
|
44
40
|
required: true,
|
45
|
-
description: "The Discord resource to listen for events on",
|
46
41
|
},
|
42
|
+
// Bot Interaction Options
|
47
43
|
{
|
48
|
-
displayName: "
|
49
|
-
name: "
|
44
|
+
displayName: "Interaction Type",
|
45
|
+
name: "interactionType",
|
50
46
|
type: "options",
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
options: [
|
55
|
-
// Dynamically populated based on resource
|
56
|
-
// Example for 'guild' resource
|
57
|
-
{
|
58
|
-
name: "Channel Create",
|
59
|
-
value: "channelCreate",
|
60
|
-
displayOptions: { show: { resource: ["guild"] } },
|
47
|
+
displayOptions: {
|
48
|
+
show: {
|
49
|
+
triggerType: ["botInteraction"],
|
61
50
|
},
|
51
|
+
},
|
52
|
+
options: [
|
62
53
|
{
|
63
|
-
name: "
|
64
|
-
value: "
|
65
|
-
|
54
|
+
name: "Bot Mentioned",
|
55
|
+
value: "botMentioned",
|
56
|
+
description: "Triggered when someone mentions the bot in a message",
|
66
57
|
},
|
67
|
-
// ... Add all events for each resource
|
68
|
-
// Example for 'message' resource
|
69
58
|
{
|
70
|
-
name: "Message
|
71
|
-
value: "
|
72
|
-
|
59
|
+
name: "Message Replied To",
|
60
|
+
value: "messageReplied",
|
61
|
+
description: "Triggered when someone replies to a message from the bot",
|
73
62
|
},
|
74
|
-
// ... Continue for other resources
|
75
63
|
],
|
64
|
+
default: "botMentioned",
|
65
|
+
required: true,
|
76
66
|
},
|
77
67
|
{
|
78
68
|
displayName: "Filter by Servers",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"node-description.js","sourceRoot":"","sources":["../../../../nodes/src/discord-trigger/node-description.ts"],"names":[],"mappings":";;;AAEa,QAAA,eAAe,GAAyB;IACnD,WAAW,EAAE,iBAAiB;IAC9B,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,CAAC,SAAS,CAAC;IAClB,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,+CAA+C;IAC5D,QAAQ,EAAE,
|
1
|
+
{"version":3,"file":"node-description.js","sourceRoot":"","sources":["../../../../nodes/src/discord-trigger/node-description.ts"],"names":[],"mappings":"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"}
|