UNPKG

n8n-nodes-discord-self

Version:

n8n community nodes for Discord selfbot via discord.js-selfbot-v13 (use at your own risk)

116 lines 6.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DiscordSelfTrigger = void 0; const ClientManager_1 = require("./ClientManager"); class DiscordSelfTrigger { constructor() { this.description = { displayName: 'Discord Self Trigger', name: 'discordSelfTrigger', group: ['trigger'], version: 1, description: '触发来自 Discord 自用号的事件(最小实现:messageCreate)', defaults: { name: 'Discord Self Trigger', }, inputs: [], outputs: ["main"], credentials: [ { name: 'discordSelfApi', required: true, }, ], properties: [ { displayName: 'Event', name: 'event', type: 'options', default: 'messageCreate', options: [{ name: 'Message Created', value: 'messageCreate' }], }, { displayName: 'Channel IDs', name: 'channelIds', type: 'string', default: '', description: '可选,逗号分隔的频道ID列表。为空表示全部频道', }, { displayName: 'Only DMs', name: 'onlyDMs', type: 'boolean', default: false, description: 'Whether to listen to direct messages only', }, { displayName: 'Only Mentions Me', name: 'onlyMentions', type: 'boolean', default: false, description: 'Whether to trigger only when the authenticated user is mentioned', }, { displayName: 'Ignore Self Messages', name: 'ignoreSelf', type: 'boolean', default: true, description: 'Whether to ignore messages sent by the authenticated user', }, ], }; } async trigger() { var _a; const credentials = (await this.getCredentials('discordSelfApi')); const token = credentials.token; const channelIdsRaw = this.getNodeParameter('channelIds', 0) || ''; const onlyDMs = this.getNodeParameter('onlyDMs', 0) || false; const onlyMentions = this.getNodeParameter('onlyMentions', 0) || false; const ignoreSelf = (_a = this.getNodeParameter('ignoreSelf', 0)) !== null && _a !== void 0 ? _a : true; const client = await (0, ClientManager_1.getOrCreateClient)(token); const handler = (message) => { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s; try { if (onlyDMs && (message === null || message === void 0 ? void 0 : message.guild)) return; if (ignoreSelf && ((_a = message === null || message === void 0 ? void 0 : message.author) === null || _a === void 0 ? void 0 : _a.id) && ((_b = client.user) === null || _b === void 0 ? void 0 : _b.id) && message.author.id === client.user.id) return; if (channelIdsRaw) { const allowIds = channelIdsRaw .split(',') .map((s) => s.trim()) .filter((s) => s.length > 0); if (allowIds.length > 0 && !allowIds.includes((_c = message === null || message === void 0 ? void 0 : message.channel) === null || _c === void 0 ? void 0 : _c.id)) return; } if (onlyMentions && ((_d = client.user) === null || _d === void 0 ? void 0 : _d.id)) { const mentioned = Boolean((_g = (_f = (_e = message === null || message === void 0 ? void 0 : message.mentions) === null || _e === void 0 ? void 0 : _e.users) === null || _f === void 0 ? void 0 : _f.has) === null || _g === void 0 ? void 0 : _g.call(_f, client.user.id)); if (!mentioned) return; } const data = { id: message === null || message === void 0 ? void 0 : message.id, content: (_h = message === null || message === void 0 ? void 0 : message.content) !== null && _h !== void 0 ? _h : '', authorId: (_k = (_j = message === null || message === void 0 ? void 0 : message.author) === null || _j === void 0 ? void 0 : _j.id) !== null && _k !== void 0 ? _k : null, authorUsername: (_m = (_l = message === null || message === void 0 ? void 0 : message.author) === null || _l === void 0 ? void 0 : _l.username) !== null && _m !== void 0 ? _m : null, channelId: (_p = (_o = message === null || message === void 0 ? void 0 : message.channel) === null || _o === void 0 ? void 0 : _o.id) !== null && _p !== void 0 ? _p : null, guildId: (_r = (_q = message === null || message === void 0 ? void 0 : message.guild) === null || _q === void 0 ? void 0 : _q.id) !== null && _r !== void 0 ? _r : null, createdTimestamp: (_s = message === null || message === void 0 ? void 0 : message.createdTimestamp) !== null && _s !== void 0 ? _s : null, }; const items = this.helpers.returnJsonArray([data]); this.emit([items]); } catch (e) { } }; client.on('messageCreate', handler); return { closeFunction: async () => { client.off('messageCreate', handler); }, }; } } exports.DiscordSelfTrigger = DiscordSelfTrigger; //# sourceMappingURL=DiscordSelfTrigger.node.js.map