n8n-nodes-discord-dnd
Version:
n8n node to create triggers for Discord events
60 lines • 3.14 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.DiscordTrigger = void 0;
const client_1 = require("./client");
const DiscordTriggerDescription_1 = require("../definitions/node-description/DiscordTriggerDescription");
const DiscordEventMethods_1 = require("../definitions/node-methods/DiscordEventMethods");
const DiscordIntentMapping_1 = require("../definitions/DiscordIntentMapping");
const TriggerEventHandler_1 = require("../handlers/trigger/TriggerEventHandler");
class DiscordTrigger {
constructor() {
this.description = DiscordTriggerDescription_1.DiscordTriggerDescription;
this.methods = DiscordEventMethods_1.DiscordTriggerMethods;
}
async trigger() {
const credentials = (await this.getCredentials("discordApiDnd"));
const parameters = {
triggerType: this.getNodeParameter("triggerType", "message"),
event: this.getNodeParameter("event", "messageCreate"),
includeBot: this.getNodeParameter("includeBot", false),
directMessage: this.getNodeParameter("directMessage", false),
};
// Get pattern and value parameters for message triggers
if (parameters.triggerType === "message") {
parameters.pattern = this.getNodeParameter("pattern", "botMention");
if (["contains", "startsWith", "endsWith", "equals", "regex"].includes(parameters.pattern)) {
parameters.value = this.getNodeParameter("value", "");
}
}
// Get additional fields for filtering
const additionalFields = this.getNodeParameter("additionalFields", {});
if (additionalFields.serverIds) {
parameters.serverIds = additionalFields.serverIds.split(',').map(id => id.trim());
}
if (additionalFields.channelIds) {
parameters.channelIds = additionalFields.channelIds.split(',').map(id => id.trim());
}
if (additionalFields.roleIds) {
parameters.roleIds = additionalFields.roleIds.split(',').map(id => id.trim());
}
if (additionalFields.userIds) {
parameters.userIds = additionalFields.userIds.split(',').map(id => id.trim());
}
const clientOptions = (0, DiscordIntentMapping_1.getclientOptions)(parameters.triggerType);
const client = await (0, client_1.initializeDiscordClient)(credentials.botToken, clientOptions);
const eventHandler = new TriggerEventHandler_1.TriggerEventHandler(client, this);
await eventHandler.setupEventHandler(parameters.event, parameters.includeBot, parameters.directMessage, parameters.pattern, parameters.value, parameters.serverIds, parameters.channelIds, parameters.roleIds, parameters.userIds);
const closeFunction = async () => {
console.log("Disconnecting from Discord...");
client.destroy();
};
return {
manualTriggerFunction: async () => {
return;
},
closeFunction,
};
}
}
exports.DiscordTrigger = DiscordTrigger;
//# sourceMappingURL=DiscordTrigger.node.js.map
;