n8n-nodes-discord-dnd 0.1.77 → 0.1.78

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.
@@ -5,6 +5,15 @@ const discord_js_1 = require("discord.js");
5
5
  const voice_1 = require("@discordjs/voice");
6
6
  const client_1 = require("./client");
7
7
  let discordClient = null; // 🧠 Client được cache
8
+ async function waitForConnectionReady(connection, timeout = 30000) {
9
+ await Promise.race([
10
+ (0, voice_1.entersState)(connection, voice_1.VoiceConnectionStatus.Ready, timeout),
11
+ new Promise((_, reject) => {
12
+ connection.once(voice_1.VoiceConnectionStatus.Disconnected, () => reject(new Error("Disconnected")));
13
+ connection.once("error", reject);
14
+ }),
15
+ ]);
16
+ }
8
17
  async function getOrCreateDiscordClient(token, options) {
9
18
  if (discordClient && discordClient.isReady()) {
10
19
  return discordClient;
@@ -89,9 +98,14 @@ class DiscordAction {
89
98
  switch (operation) {
90
99
  case "joinVoiceChannel": {
91
100
  const voiceChannel = (await guild.channels.fetch(channelId));
101
+ // is voice channel
92
102
  if (!voiceChannel || voiceChannel.type !== 2) {
93
103
  throw new Error(`Channel ${channelId} is not a valid voice channel`);
94
104
  }
105
+ const oldConnection = (0, voice_1.getVoiceConnection)(guildId);
106
+ if (oldConnection) {
107
+ oldConnection.destroy();
108
+ }
95
109
  const connection = (0, voice_1.joinVoiceChannel)({
96
110
  channelId: voiceChannel.id,
97
111
  guildId: voiceChannel.guild.id,
@@ -103,17 +117,11 @@ class DiscordAction {
103
117
  const player = (0, voice_1.createAudioPlayer)();
104
118
  connection.subscribe(player);
105
119
  try {
106
- await Promise.race([
107
- (0, voice_1.entersState)(connection, voice_1.VoiceConnectionStatus.Ready, 30000),
108
- new Promise((_, reject) => {
109
- connection.on(voice_1.VoiceConnectionStatus.Disconnected, () => reject(new Error("Voice connection disconnected")));
110
- connection.on("error", (err) => reject(err));
111
- }),
112
- ]);
120
+ await waitForConnectionReady(connection);
113
121
  }
114
- catch (err) {
122
+ catch (error) {
115
123
  connection.destroy();
116
- throw new Error(`Failed to join voice channel: ${(err === null || err === void 0 ? void 0 : err.message) || "Unknown error"}`);
124
+ throw new Error(`Failed to join voice channel: ${(error === null || error === void 0 ? void 0 : error.message) || "Unknown error"}`);
117
125
  }
118
126
  break;
119
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DiscordAction.node.js","sourceRoot":"","sources":["../../src/nodes/DiscordAction.node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DiscordAction.node.js","sourceRoot":"","sources":["../../src/nodes/DiscordAction.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { INodeType, ITriggerFunctions, ITriggerResponse, INodeTypeDescription } from "n8n-workflow";
2
+ export declare class DiscordTrigger2 implements INodeType {
3
+ description: INodeTypeDescription;
4
+ trigger(this: ITriggerFunctions): Promise<ITriggerResponse>;
5
+ }
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.DiscordTrigger2 = void 0;
30
+ const discord_js_1 = require("discord.js");
31
+ const voice_1 = require("@discordjs/voice");
32
+ const prism_media_1 = __importDefault(require("prism-media"));
33
+ const stream_1 = require("stream");
34
+ class BufferStream extends stream_1.Writable {
35
+ constructor(onDone) {
36
+ super();
37
+ this.onDone = onDone;
38
+ this.chunks = [];
39
+ }
40
+ _write(chunk, _encoding, callback) {
41
+ this.chunks.push(chunk);
42
+ callback();
43
+ }
44
+ _final(callback) {
45
+ const buffer = Buffer.concat(this.chunks);
46
+ this.onDone(buffer);
47
+ callback();
48
+ }
49
+ }
50
+ class DiscordTrigger2 {
51
+ constructor() {
52
+ this.description = {
53
+ displayName: "Discord Trigger 2",
54
+ name: "discordTrigger2",
55
+ icon: "file:../assets/icon/discord.svg",
56
+ group: ["trigger"],
57
+ version: 1,
58
+ description: "Trigger when someone speaks in a voice channel",
59
+ defaults: { name: "Discord Trigger 2" },
60
+ inputs: [],
61
+ outputs: ["main"],
62
+ credentials: [{ name: "discordApi", required: true }],
63
+ properties: [
64
+ {
65
+ displayName: "Voice Channel ID",
66
+ name: "voiceChannelId",
67
+ type: "string",
68
+ required: true,
69
+ default: "",
70
+ },
71
+ ],
72
+ };
73
+ }
74
+ async trigger() {
75
+ const self = this; // Giữ lại context
76
+ const credentials = (await this.getCredentials("discordApi"));
77
+ const voiceChannelId = this.getNodeParameter("voiceChannelId");
78
+ const { Client } = await Promise.resolve().then(() => __importStar(require("discord.js")));
79
+ const clientOptions = {
80
+ intents: [discord_js_1.GatewayIntentBits.Guilds, discord_js_1.GatewayIntentBits.GuildVoiceStates],
81
+ partials: [discord_js_1.Partials.Channel],
82
+ };
83
+ const client = new Client(clientOptions);
84
+ client.once("ready", async () => {
85
+ const channel = (await client.channels.fetch(voiceChannelId));
86
+ if (!(channel === null || channel === void 0 ? void 0 : channel.isVoiceBased()))
87
+ return;
88
+ const connection = (0, voice_1.joinVoiceChannel)({
89
+ channelId: channel.id,
90
+ guildId: channel.guild.id,
91
+ adapterCreator: channel.guild
92
+ .voiceAdapterCreator,
93
+ });
94
+ connection.on(voice_1.VoiceConnectionStatus.Ready, () => {
95
+ console.log("Bot joined voice channel.");
96
+ });
97
+ client.on("voiceStateUpdate", (oldState, newState) => {
98
+ if (newState.channelId !== voiceChannelId)
99
+ return;
100
+ const receiver = connection.receiver;
101
+ const userId = newState.id;
102
+ const stream = receiver.subscribe(userId, {
103
+ end: { behavior: voice_1.EndBehaviorType.AfterSilence, duration: 1000 },
104
+ });
105
+ const decoder = new prism_media_1.default.opus.Decoder({
106
+ rate: 48000,
107
+ channels: 2,
108
+ frameSize: 960,
109
+ });
110
+ const bufferStream = new BufferStream(async (buffer) => {
111
+ console.log("Audio captured for user:", userId);
112
+ // Trả dữ liệu về n8n (nó sẽ vào trong workflow)
113
+ await self.emit([
114
+ [
115
+ {
116
+ json: {
117
+ userId,
118
+ timestamp: Date.now(),
119
+ },
120
+ binary: {
121
+ audio: await self.helpers.prepareBinaryData(buffer, "audio.pcm"),
122
+ },
123
+ },
124
+ ],
125
+ ]);
126
+ });
127
+ stream.pipe(decoder).pipe(bufferStream);
128
+ });
129
+ });
130
+ await client.login(credentials.botToken);
131
+ const closeFunction = async () => {
132
+ const conn = (0, voice_1.getVoiceConnection)(voiceChannelId);
133
+ if (conn)
134
+ conn.destroy();
135
+ client.destroy();
136
+ };
137
+ return {
138
+ closeFunction,
139
+ manualTriggerFunction: async () => { },
140
+ };
141
+ }
142
+ }
143
+ exports.DiscordTrigger2 = DiscordTrigger2;
144
+ //# sourceMappingURL=DiscordTrigger2.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscordTrigger2.node.js","sourceRoot":"","sources":["../../src/nodes/DiscordTrigger2.node.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-discord-dnd",
3
- "version": "0.1.77",
3
+ "version": "0.1.78",
4
4
  "description": "n8n node to create triggers for Discord events",
5
5
  "keywords": [
6
6
  "n8n",
@@ -34,7 +34,8 @@
34
34
  ],
35
35
  "nodes": [
36
36
  "dist/nodes/DiscordTrigger.node.js",
37
- "dist/nodes/DiscordAction.node.js"
37
+ "dist/nodes/DiscordAction.node.js",
38
+ "dist/nodes/DiscordTrigger2.node.js"
38
39
  ]
39
40
  },
40
41
  "devDependencies": {
@@ -51,8 +52,12 @@
51
52
  "dependencies": {
52
53
  "@discordjs/opus": "^0.10.0",
53
54
  "@discordjs/voice": "^0.16.1",
54
- "discord.js": "^14.9.0",
55
+ "axios": "^1.9.0",
56
+ "discord.js": "^14.19.2",
57
+ "ffmpeg-static": "^5.2.0",
58
+ "fluent-ffmpeg": "^2.1.3",
55
59
  "libsodium-wrappers": "^0.7.15",
56
- "n8n-core": "~1.5.0"
60
+ "n8n-core": "~1.5.0",
61
+ "prism-media": "^1.3.5"
57
62
  }
58
63
  }