n8n-nodes-discord-dnd 0.1.70 → 0.1.72
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/definitions/DiscordEventDefinitions.js +80 -79
- package/dist/definitions/DiscordEventDefinitions.js.map +1 -1
- package/dist/definitions/DiscordIntentMapping.d.ts +2 -2
- package/dist/definitions/DiscordIntentMapping.js +27 -9
- package/dist/definitions/DiscordIntentMapping.js.map +1 -1
- package/dist/handlers/DiscordEventHandler.js +153 -390
- package/dist/handlers/DiscordEventHandler.js.map +1 -1
- package/dist/nodes/DiscordTrigger.node.js +2 -2
- package/dist/nodes/DiscordTrigger.node.js.map +1 -1
- package/dist/nodes/client.d.ts +2 -2
- package/dist/nodes/client.js +2 -4
- package/dist/nodes/client.js.map +1 -1
- package/package.json +1 -1
@@ -11,7 +11,7 @@ class DiscordEventHandler {
|
|
11
11
|
async setupEventHandler(event) {
|
12
12
|
// Handle main events
|
13
13
|
this.client.on(event, async (...args) => {
|
14
|
-
var _a, _b, _c, _d, _e, _f
|
14
|
+
var _a, _b, _c, _d, _e, _f;
|
15
15
|
const data = {};
|
16
16
|
// Helper to enrich user/member info with roles
|
17
17
|
const enrichMember = async (memberOrUser, guildId) => {
|
@@ -24,14 +24,13 @@ class DiscordEventHandler {
|
|
24
24
|
return {
|
25
25
|
...memberOrUser,
|
26
26
|
roles: (member === null || member === void 0 ? void 0 : member.roles.cache.map((role) => ({
|
27
|
-
|
28
|
-
name: role.name,
|
27
|
+
...role,
|
29
28
|
}))) || [],
|
30
29
|
};
|
31
30
|
};
|
32
31
|
switch (event) {
|
33
32
|
// Message events
|
34
|
-
case
|
33
|
+
case discord_js_1.Events.MessageCreate:
|
35
34
|
const message = args[0];
|
36
35
|
data.message = await (0, MessageTransformer_1.messageToJson)(message);
|
37
36
|
// Use the guild ID from the message when enriching the author
|
@@ -39,89 +38,74 @@ class DiscordEventHandler {
|
|
39
38
|
data.user = await enrichMember(message.author, message.guildId);
|
40
39
|
}
|
41
40
|
else {
|
42
|
-
data.user = message.author;
|
41
|
+
data.user = { ...message.author };
|
43
42
|
}
|
44
43
|
break;
|
45
|
-
case
|
44
|
+
case discord_js_1.Events.MessageDelete:
|
46
45
|
const deletedMessage = args[0];
|
47
46
|
data.message = { ...deletedMessage };
|
48
47
|
break;
|
49
|
-
case
|
48
|
+
case discord_js_1.Events.MessageBulkDelete:
|
50
49
|
const deletedMessages = args[0]; // Collection<Snowflake, Message>
|
51
50
|
const channelMessageDeleteBulk = args[1]; // TextBasedChannel
|
52
51
|
// Trích xuất thông tin kênh
|
53
52
|
data.channel = {
|
54
|
-
|
55
|
-
name: channelMessageDeleteBulk.name || "DM",
|
56
|
-
guildId: channelMessageDeleteBulk.guildId || null,
|
57
|
-
type: channelMessageDeleteBulk.type,
|
53
|
+
...channelMessageDeleteBulk,
|
58
54
|
};
|
59
55
|
// Trích xuất danh sách tin nhắn bị xóa
|
60
|
-
data.deletedMessages = deletedMessages.map((message) => {
|
61
|
-
|
62
|
-
|
63
|
-
id: message.id,
|
64
|
-
content: message.content || "",
|
65
|
-
authorId: (_a = message.author) === null || _a === void 0 ? void 0 : _a.id,
|
66
|
-
createdTimestamp: message.createdTimestamp,
|
67
|
-
});
|
68
|
-
});
|
56
|
+
data.deletedMessages = deletedMessages.map((message) => ({
|
57
|
+
...message,
|
58
|
+
}));
|
69
59
|
// Tổng số tin nhắn bị xóa
|
70
60
|
data.deletedCount = deletedMessages.size;
|
71
61
|
break;
|
72
|
-
case
|
62
|
+
case discord_js_1.Events.MessageUpdate:
|
73
63
|
const oldMessage = args[0];
|
74
64
|
const newMessage = args[1];
|
75
65
|
data.oldMessage = { ...oldMessage };
|
76
66
|
data.newMessage = { ...newMessage };
|
77
67
|
break;
|
78
|
-
case
|
79
|
-
case
|
80
|
-
const
|
68
|
+
case discord_js_1.Events.MessageReactionAdd:
|
69
|
+
case discord_js_1.Events.MessageReactionRemove:
|
70
|
+
const messageReaction = args[0];
|
81
71
|
const reactUser = args[1];
|
82
|
-
|
83
|
-
data.
|
72
|
+
const details = args[2]; // MessageReactionEventDetails
|
73
|
+
data.messageReaction = { ...messageReaction };
|
74
|
+
data.user = await enrichMember(reactUser, messageReaction.message.guildId || undefined);
|
75
|
+
data.details = { ...details };
|
84
76
|
break;
|
85
|
-
case
|
77
|
+
case discord_js_1.Events.MessageReactionRemoveAll:
|
86
78
|
const messageReactionRemoved = args[0];
|
79
|
+
const reactions = args[1]; // Collection<Snowflake, MessageReaction>
|
87
80
|
data.message = { ...messageReactionRemoved };
|
81
|
+
data.reactions = reactions.map((reaction) => ({
|
82
|
+
...reaction,
|
83
|
+
}));
|
88
84
|
break;
|
89
|
-
case
|
85
|
+
case discord_js_1.Events.MessageReactionRemoveEmoji:
|
90
86
|
const reactionMessageReactionRemoveEmoji = args[0]; // MessageReaction
|
91
|
-
console.log(`🚀 ~ messageReactionRemoveEmoji - Emoji ${reactionMessageReactionRemoveEmoji.emoji.name} removed from message ${reactionMessageReactionRemoveEmoji.message.id}`);
|
92
87
|
// Trích xuất thông tin tin nhắn và reaction
|
93
88
|
data.reaction = {
|
94
|
-
|
95
|
-
id: reactionMessageReactionRemoveEmoji.emoji.id,
|
96
|
-
name: reactionMessageReactionRemoveEmoji.emoji.name,
|
97
|
-
animated: reactionMessageReactionRemoveEmoji.emoji.animated || false,
|
98
|
-
},
|
99
|
-
message: {
|
100
|
-
id: reactionMessageReactionRemoveEmoji.message.id,
|
101
|
-
channelId: reactionMessageReactionRemoveEmoji.message.channelId,
|
102
|
-
guildId: reactionMessageReactionRemoveEmoji.message.guildId || null,
|
103
|
-
content: reactionMessageReactionRemoveEmoji.message.content || "",
|
104
|
-
authorId: (_a = reactionMessageReactionRemoveEmoji.message.author) === null || _a === void 0 ? void 0 : _a.id,
|
105
|
-
},
|
89
|
+
...reactionMessageReactionRemoveEmoji,
|
106
90
|
};
|
107
91
|
break;
|
108
|
-
case
|
92
|
+
case discord_js_1.Events.TypingStart:
|
109
93
|
const typing = args[0];
|
110
94
|
data.typing = { ...typing };
|
111
95
|
if (typing.user) {
|
112
|
-
data.user = await enrichMember(typing.user
|
96
|
+
data.user = await enrichMember(typing.user);
|
113
97
|
}
|
114
98
|
break;
|
115
99
|
// Guild events
|
116
|
-
case
|
100
|
+
case discord_js_1.Events.ChannelCreate:
|
117
101
|
const channel = args[0];
|
118
102
|
data.channel = { ...channel };
|
119
103
|
break;
|
120
|
-
case
|
104
|
+
case discord_js_1.Events.ChannelDelete:
|
121
105
|
const deletedChannel = args[0];
|
122
106
|
data.channel = { ...deletedChannel };
|
123
107
|
break;
|
124
|
-
case
|
108
|
+
case discord_js_1.Events.ChannelPinsUpdate:
|
125
109
|
const pinsChannel = args[0]; // GuildChannel hoặc ThreadChannel
|
126
110
|
const pinTimestamp = args[1]; // Date
|
127
111
|
// Trích xuất thông tin cơ bản của channel
|
@@ -143,12 +127,12 @@ class DiscordEventHandler {
|
|
143
127
|
guildId: latestPinnedMessage.guildId,
|
144
128
|
createdTimestamp: latestPinnedMessage.createdTimestamp,
|
145
129
|
author: {
|
146
|
-
id: (
|
147
|
-
username: (
|
148
|
-
discriminator: (
|
149
|
-
globalName: (
|
150
|
-
avatar: (
|
151
|
-
bot: (
|
130
|
+
id: (_a = latestPinnedMessage.author) === null || _a === void 0 ? void 0 : _a.id,
|
131
|
+
username: (_b = latestPinnedMessage.author) === null || _b === void 0 ? void 0 : _b.username,
|
132
|
+
discriminator: (_c = latestPinnedMessage.author) === null || _c === void 0 ? void 0 : _c.discriminator,
|
133
|
+
globalName: (_d = latestPinnedMessage.author) === null || _d === void 0 ? void 0 : _d.globalName,
|
134
|
+
avatar: (_e = latestPinnedMessage.author) === null || _e === void 0 ? void 0 : _e.avatar,
|
135
|
+
bot: (_f = latestPinnedMessage.author) === null || _f === void 0 ? void 0 : _f.bot,
|
152
136
|
},
|
153
137
|
pinned: latestPinnedMessage.pinned,
|
154
138
|
pinnedAt: pinTimestamp.toISOString(), // Thời gian ghim (dùng pinTimestamp từ sự kiện)
|
@@ -163,15 +147,9 @@ class DiscordEventHandler {
|
|
163
147
|
data.pinnedMessage = null;
|
164
148
|
}
|
165
149
|
// Lưu toàn bộ danh sách tin nhắn ghim (nếu cần)
|
166
|
-
data.pinnedMessages = pinnedMessages.map((message) => {
|
167
|
-
|
168
|
-
|
169
|
-
id: message.id,
|
170
|
-
content: message.content,
|
171
|
-
authorId: (_a = message.author) === null || _a === void 0 ? void 0 : _a.id,
|
172
|
-
createdTimestamp: message.createdTimestamp,
|
173
|
-
});
|
174
|
-
});
|
150
|
+
data.pinnedMessages = pinnedMessages.map((message) => ({
|
151
|
+
...message,
|
152
|
+
}));
|
175
153
|
}
|
176
154
|
catch (error) {
|
177
155
|
console.error("Lỗi khi fetch tin nhắn ghim:", error);
|
@@ -179,136 +157,77 @@ class DiscordEventHandler {
|
|
179
157
|
data.pinnedMessages = [];
|
180
158
|
}
|
181
159
|
break;
|
182
|
-
case
|
160
|
+
case discord_js_1.Events.ChannelUpdate:
|
183
161
|
const oldChannel = args[0];
|
184
162
|
const newChannel = args[1];
|
185
163
|
data.oldChannel = { ...oldChannel };
|
186
164
|
data.newChannel = { ...newChannel };
|
187
165
|
break;
|
188
|
-
case
|
166
|
+
case discord_js_1.Events.GuildAvailable:
|
189
167
|
const guildAvailable = args[0]; // Đối tượng Guild
|
190
168
|
// Trích xuất thông tin chi tiết từ guild
|
191
169
|
data.guild = {
|
192
|
-
|
193
|
-
name: guildAvailable.name,
|
194
|
-
icon: guildAvailable.icon,
|
195
|
-
description: guildAvailable.description,
|
196
|
-
memberCount: guildAvailable.memberCount,
|
197
|
-
ownerId: guildAvailable.ownerId,
|
198
|
-
joinedTimestamp: guildAvailable.joinedTimestamp,
|
199
|
-
available: guildAvailable.available,
|
170
|
+
...guildAvailable,
|
200
171
|
channels: guildAvailable.channels.cache.map((channel) => ({
|
201
|
-
|
202
|
-
|
203
|
-
|
172
|
+
...channel,
|
173
|
+
})),
|
174
|
+
roles: guildAvailable.roles.cache.map((role) => ({
|
175
|
+
...role,
|
204
176
|
})),
|
205
|
-
roles: guildAvailable.roles.cache.map((role) => {
|
206
|
-
var _a;
|
207
|
-
return ({
|
208
|
-
id: role.id,
|
209
|
-
name: role.name,
|
210
|
-
color: role.color,
|
211
|
-
permissions: (_a = role.permissions) === null || _a === void 0 ? void 0 : _a.bitfield,
|
212
|
-
});
|
213
|
-
}),
|
214
177
|
// Nếu cần, fetch owner của guild
|
215
178
|
owner: await guildAvailable
|
216
179
|
.fetchOwner()
|
217
|
-
.then((owner) => {
|
218
|
-
|
219
|
-
|
220
|
-
id: owner.id,
|
221
|
-
username: (_a = owner.user) === null || _a === void 0 ? void 0 : _a.username,
|
222
|
-
globalName: (_b = owner.user) === null || _b === void 0 ? void 0 : _b.globalName,
|
223
|
-
nickname: owner.nickname,
|
224
|
-
});
|
225
|
-
})
|
180
|
+
.then((owner) => ({
|
181
|
+
...owner,
|
182
|
+
}))
|
226
183
|
.catch((error) => {
|
227
184
|
console.error("Lỗi khi fetch owner:", error);
|
228
185
|
return null;
|
229
186
|
}),
|
230
187
|
};
|
231
188
|
break;
|
232
|
-
case
|
189
|
+
case discord_js_1.Events.GuildCreate:
|
233
190
|
const guildCreated = args[0]; // Guild
|
234
191
|
console.log(`🚀 ~ guildCreate - Bot được thêm vào guild ${guildCreated.name} (ID: ${guildCreated.id})`);
|
235
192
|
data.guild = {
|
236
|
-
|
237
|
-
name: guildCreated.name,
|
238
|
-
icon: guildCreated.icon,
|
239
|
-
description: guildCreated.description,
|
240
|
-
memberCount: guildCreated.memberCount,
|
241
|
-
ownerId: guildCreated.ownerId,
|
242
|
-
joinedTimestamp: guildCreated.joinedTimestamp,
|
243
|
-
available: guildCreated.available,
|
193
|
+
...guildCreated,
|
244
194
|
channels: guildCreated.channels.cache.map((channel) => ({
|
245
|
-
|
246
|
-
|
247
|
-
|
195
|
+
...channel,
|
196
|
+
})),
|
197
|
+
roles: guildCreated.roles.cache.map((role) => ({
|
198
|
+
...role,
|
248
199
|
})),
|
249
|
-
roles: guildCreated.roles.cache.map((role) => {
|
250
|
-
var _a;
|
251
|
-
return ({
|
252
|
-
id: role.id,
|
253
|
-
name: role.name,
|
254
|
-
color: role.color,
|
255
|
-
permissions: (_a = role.permissions) === null || _a === void 0 ? void 0 : _a.bitfield,
|
256
|
-
});
|
257
|
-
}),
|
258
200
|
owner: await guildCreated
|
259
201
|
.fetchOwner()
|
260
|
-
.then((owner) => {
|
261
|
-
|
262
|
-
|
263
|
-
id: owner.id,
|
264
|
-
username: (_a = owner.user) === null || _a === void 0 ? void 0 : _a.username,
|
265
|
-
globalName: (_b = owner.user) === null || _b === void 0 ? void 0 : _b.globalName,
|
266
|
-
nickname: owner.nickname,
|
267
|
-
});
|
268
|
-
})
|
202
|
+
.then((owner) => ({
|
203
|
+
...owner,
|
204
|
+
}))
|
269
205
|
.catch((error) => {
|
270
206
|
console.error("Lỗi khi fetch owner:", error);
|
271
207
|
return null;
|
272
208
|
}),
|
273
209
|
};
|
274
210
|
break;
|
275
|
-
case
|
211
|
+
case discord_js_1.Events.GuildDelete:
|
276
212
|
const guildDeleted = args[0]; // Guild hoặc PartialGuild
|
277
|
-
console.log(`🚀 ~ guildDelete - Bot bị xóa khỏi guild ${guildDeleted.name || "unknown"} (ID: ${guildDeleted.id})`);
|
278
213
|
data.guild = {
|
279
|
-
|
280
|
-
name: guildDeleted.name || "unknown",
|
281
|
-
available: guildDeleted.available || false, // Có thể là false nếu guild không khả dụng
|
214
|
+
...guildDeleted,
|
282
215
|
};
|
283
216
|
break;
|
284
|
-
case
|
217
|
+
case discord_js_1.Events.GuildUnavailable:
|
285
218
|
const guildUnavailable = args[0]; // Guild
|
286
|
-
console.log(`🚀 ~ guildUnavailable - Guild ${guildUnavailable.name} (ID: ${guildUnavailable.id}) không khả dụng.`);
|
287
219
|
data.guild = {
|
288
|
-
|
289
|
-
name: guildUnavailable.name,
|
290
|
-
available: guildUnavailable.available, // Sẽ là false
|
220
|
+
...guildUnavailable,
|
291
221
|
};
|
292
222
|
break;
|
293
|
-
case
|
223
|
+
case discord_js_1.Events.GuildUpdate:
|
294
224
|
const oldGuild = args[0]; // Guild trước khi thay đổi
|
295
225
|
const newGuild = args[1]; // Guild sau khi thay đổi
|
296
|
-
console.log(`🚀 ~ guildUpdate - Guild ${oldGuild.name} (ID: ${oldGuild.id}) đã được cập nhật.`);
|
297
226
|
data.oldGuild = {
|
298
|
-
|
299
|
-
name: oldGuild.name,
|
300
|
-
icon: oldGuild.icon,
|
301
|
-
description: oldGuild.description,
|
302
|
-
memberCount: oldGuild.memberCount,
|
303
|
-
ownerId: oldGuild.ownerId,
|
227
|
+
...oldGuild,
|
304
228
|
};
|
305
229
|
data.newGuild = {
|
306
|
-
|
307
|
-
name: newGuild.name,
|
308
|
-
icon: newGuild.icon,
|
309
|
-
description: newGuild.description,
|
310
|
-
memberCount: newGuild.memberCount,
|
311
|
-
ownerId: newGuild.ownerId,
|
230
|
+
...newGuild,
|
312
231
|
};
|
313
232
|
// So sánh thay đổi (ví dụ: log những thay đổi chính)
|
314
233
|
data.changes = {};
|
@@ -328,52 +247,32 @@ class DiscordEventHandler {
|
|
328
247
|
new: newGuild.description,
|
329
248
|
};
|
330
249
|
break;
|
331
|
-
case
|
332
|
-
case
|
250
|
+
case discord_js_1.Events.GuildRoleCreate:
|
251
|
+
case discord_js_1.Events.GuildRoleDelete:
|
333
252
|
const role = args[0];
|
334
253
|
data.role = { ...role };
|
335
|
-
data.guild = { ...role.guild };
|
336
254
|
break;
|
337
|
-
case
|
255
|
+
case discord_js_1.Events.GuildRoleUpdate:
|
338
256
|
const oldRole = args[0];
|
339
257
|
const newRole = args[1];
|
340
258
|
data.oldRole = { ...oldRole };
|
341
259
|
data.newRole = { ...newRole };
|
342
|
-
data.guild = { ...newRole.guild };
|
343
|
-
break;
|
344
|
-
case "stageInstanceCreate":
|
345
|
-
const stageInstanceCreated = args[0]; // StageInstance
|
346
|
-
data.stageInstance = { ...stageInstanceCreated };
|
347
|
-
break;
|
348
|
-
case "stageInstanceDelete":
|
349
|
-
const stageInstanceDeleted = args[0]; // StageInstance
|
350
|
-
data.stageInstance = {
|
351
|
-
id: stageInstanceDeleted.id,
|
352
|
-
channelId: stageInstanceDeleted.channelId,
|
353
|
-
guildId: stageInstanceDeleted.guildId,
|
354
|
-
topic: stageInstanceDeleted.topic,
|
355
|
-
privacyLevel: stageInstanceDeleted.privacyLevel,
|
356
|
-
};
|
357
260
|
break;
|
358
|
-
case
|
261
|
+
case discord_js_1.Events.StageInstanceCreate:
|
262
|
+
case discord_js_1.Events.StageInstanceDelete:
|
263
|
+
const stageInstance = args[0]; // StageInstance
|
264
|
+
data.stageInstance = { ...stageInstance };
|
265
|
+
break;
|
266
|
+
case discord_js_1.Events.StageInstanceUpdate:
|
359
267
|
const oldStageInstance = args[0]; // StageInstance trước khi thay đổi
|
360
268
|
const newStageInstance = args[1]; // StageInstance sau khi thay đổi
|
361
269
|
data.oldStageInstance = oldStageInstance
|
362
270
|
? {
|
363
|
-
|
364
|
-
channelId: oldStageInstance.channelId,
|
365
|
-
guildId: oldStageInstance.guildId,
|
366
|
-
topic: oldStageInstance.topic,
|
367
|
-
privacyLevel: oldStageInstance.privacyLevel,
|
271
|
+
...oldStageInstance,
|
368
272
|
}
|
369
273
|
: null;
|
370
274
|
data.newStageInstance = {
|
371
|
-
|
372
|
-
channelId: newStageInstance.channelId,
|
373
|
-
guildId: newStageInstance.guildId,
|
374
|
-
topic: newStageInstance.topic,
|
375
|
-
privacyLevel: newStageInstance.privacyLevel,
|
376
|
-
discoverableDisabled: newStageInstance.discoverableDisabled,
|
275
|
+
...newStageInstance,
|
377
276
|
};
|
378
277
|
// So sánh thay đổi
|
379
278
|
data.changes = {};
|
@@ -392,184 +291,78 @@ class DiscordEventHandler {
|
|
392
291
|
};
|
393
292
|
}
|
394
293
|
break;
|
395
|
-
case
|
294
|
+
case discord_js_1.Events.ThreadCreate:
|
396
295
|
const threadCreate = args[0];
|
296
|
+
const newlyCreated = args[1];
|
397
297
|
data.thread = { ...threadCreate };
|
298
|
+
data.newlyCreated = newlyCreated; // true nếu thread mới được tạo
|
398
299
|
break;
|
399
|
-
case
|
300
|
+
case discord_js_1.Events.ThreadDelete:
|
400
301
|
const deletedThread = args[0];
|
401
302
|
data.thread = { ...deletedThread };
|
402
303
|
break;
|
403
|
-
case
|
304
|
+
case discord_js_1.Events.ThreadListSync:
|
404
305
|
const syncedThreads = args[0]; // Collection<Snowflake, ThreadChannel>
|
405
|
-
const
|
406
|
-
const guildThreadListSync = args[2]; // Guild
|
407
|
-
console.log(`🚀 ~ threadListSync - Synced ${syncedThreads.size} threads in guild ${guildThreadListSync.name} (ID: ${guildThreadListSync.id})`);
|
408
|
-
// Trích xuất thông tin guild
|
409
|
-
data.guild = {
|
410
|
-
id: guildThreadListSync.id,
|
411
|
-
name: guildThreadListSync.name,
|
412
|
-
};
|
413
|
-
// Trích xuất danh sách kênh
|
414
|
-
data.channels = channels.map((channel) => ({
|
415
|
-
id: channel.id,
|
416
|
-
name: channel.name,
|
417
|
-
type: channel.type,
|
418
|
-
}));
|
306
|
+
const guildThreadListSync = args[1]; // Guild
|
419
307
|
// Trích xuất danh sách thread được đồng bộ
|
420
308
|
data.syncedThreads = syncedThreads.map((thread) => ({
|
421
|
-
|
422
|
-
name: thread.name,
|
423
|
-
channelId: thread.parentId,
|
424
|
-
guildId: thread.guildId,
|
425
|
-
memberCount: thread.memberCount,
|
426
|
-
createdTimestamp: thread.createdTimestamp,
|
309
|
+
...thread,
|
427
310
|
}));
|
428
|
-
|
311
|
+
data.guild = { ...guildThreadListSync };
|
312
|
+
break;
|
313
|
+
case discord_js_1.Events.ThreadMembersUpdate:
|
429
314
|
const addedMembers = args[0]; // Collection<Snowflake, ThreadMember>
|
430
315
|
const removedMembers = args[1]; // Collection<Snowflake, ThreadMember>
|
431
316
|
const threadMembersUpdate = args[2]; // ThreadChannel
|
432
|
-
console.log(`🚀 ~ threadMembersUpdate - Thread ${threadMembersUpdate.name} (ID: ${threadMembersUpdate.id}) updated members.`);
|
433
317
|
// Trích xuất thông tin thread
|
434
318
|
data.thread = {
|
435
|
-
|
436
|
-
name: threadMembersUpdate.name,
|
437
|
-
channelId: threadMembersUpdate.parentId,
|
438
|
-
guildId: threadMembersUpdate.guildId,
|
439
|
-
memberCount: threadMembersUpdate.memberCount,
|
319
|
+
...threadMembersUpdate,
|
440
320
|
};
|
441
321
|
// Trích xuất danh sách thành viên được thêm
|
442
322
|
data.addedMembers = addedMembers.map((member) => ({
|
443
|
-
|
444
|
-
userId: member.user,
|
323
|
+
...member,
|
445
324
|
}));
|
446
325
|
// Trích xuất danh sách thành viên bị xóa
|
447
326
|
data.removedMembers = removedMembers.map((member) => ({
|
448
|
-
|
449
|
-
user: member.user,
|
327
|
+
...member,
|
450
328
|
}));
|
451
|
-
// Nếu cần, fetch thông tin chi tiết của thành viên (yêu cầu GUILD_MEMBERS intent)
|
452
|
-
if (threadMembersUpdate.guild &&
|
453
|
-
(addedMembers.size > 0 || removedMembers.size > 0)) {
|
454
|
-
data.addedMembersDetails = await Promise.all(addedMembers.map(async (member) => ({
|
455
|
-
id: member.id,
|
456
|
-
user: await thread.guild.members
|
457
|
-
.fetch(member.user)
|
458
|
-
.then((m) => {
|
459
|
-
var _a, _b;
|
460
|
-
return ({
|
461
|
-
id: m.id,
|
462
|
-
username: (_a = m.user) === null || _a === void 0 ? void 0 : _a.username,
|
463
|
-
globalName: (_b = m.user) === null || _b === void 0 ? void 0 : _b.globalName,
|
464
|
-
nickname: m.nickname,
|
465
|
-
});
|
466
|
-
})
|
467
|
-
.catch(() => null),
|
468
|
-
})));
|
469
|
-
data.removedMembersDetails = await Promise.all(removedMembers.map(async (member) => ({
|
470
|
-
id: member.id,
|
471
|
-
user: await thread.guild.members
|
472
|
-
.fetch(member.user)
|
473
|
-
.then((m) => {
|
474
|
-
var _a, _b;
|
475
|
-
return ({
|
476
|
-
id: m.id,
|
477
|
-
username: (_a = m.user) === null || _a === void 0 ? void 0 : _a.username,
|
478
|
-
globalName: (_b = m.user) === null || _b === void 0 ? void 0 : _b.globalName,
|
479
|
-
nickname: m.nickname,
|
480
|
-
});
|
481
|
-
})
|
482
|
-
.catch(() => null),
|
483
|
-
})));
|
484
|
-
}
|
485
329
|
break;
|
486
|
-
case
|
330
|
+
case discord_js_1.Events.ThreadMemberUpdate:
|
487
331
|
const oldMember = args[0]; // ThreadMember trước khi thay đổi
|
488
332
|
const newMember = args[1]; // ThreadMember sau khi thay đổi
|
489
|
-
console.log(`🚀 ~ threadMemberUpdate - Thread member updated in thread ${newMember.thread.id}`);
|
490
|
-
// Trích xuất thông tin thread
|
491
|
-
const thread = newMember.thread;
|
492
|
-
data.thread = {
|
493
|
-
id: thread.id,
|
494
|
-
name: thread.name,
|
495
|
-
channelId: thread.parentId,
|
496
|
-
guildId: thread.guildId,
|
497
|
-
memberCount: thread.memberCount,
|
498
|
-
};
|
499
333
|
// Trích xuất thông tin thành viên trước và sau khi thay đổi
|
500
334
|
data.oldMember = {
|
501
|
-
|
502
|
-
userId: oldMember.userId,
|
503
|
-
threadId: oldMember.threadId,
|
335
|
+
...oldMember,
|
504
336
|
};
|
505
337
|
data.newMember = {
|
506
|
-
|
507
|
-
userId: newMember.userId,
|
508
|
-
threadId: newMember.threadId,
|
338
|
+
...newMember,
|
509
339
|
};
|
510
|
-
// So sánh thay đổi (nếu có)
|
511
|
-
data.changes = {};
|
512
|
-
// Hiện tại ThreadMember không có nhiều thuộc tính có thể thay đổi, nhưng bạn có thể thêm logic so sánh nếu Discord cập nhật thêm tính năng
|
513
|
-
// Ví dụ: if (oldMember.someProperty !== newMember.someProperty) { ... }
|
514
|
-
// Fetch thông tin chi tiết của thành viên (nếu cần)
|
515
|
-
if (thread.guild) {
|
516
|
-
data.memberDetails = await thread.guild.members
|
517
|
-
.fetch(newMember.userId)
|
518
|
-
.then((member) => {
|
519
|
-
var _a, _b;
|
520
|
-
return ({
|
521
|
-
id: member.id,
|
522
|
-
username: (_a = member.user) === null || _a === void 0 ? void 0 : _a.username,
|
523
|
-
globalName: (_b = member.user) === null || _b === void 0 ? void 0 : _b.globalName,
|
524
|
-
nickname: member.nickname,
|
525
|
-
roles: member.roles.cache.map((role) => ({
|
526
|
-
id: role.id,
|
527
|
-
name: role.name,
|
528
|
-
})),
|
529
|
-
});
|
530
|
-
})
|
531
|
-
.catch((error) => {
|
532
|
-
console.error("Lỗi khi fetch member:", error);
|
533
|
-
return null;
|
534
|
-
});
|
535
|
-
}
|
536
340
|
break;
|
537
|
-
case
|
341
|
+
case discord_js_1.Events.ThreadUpdate:
|
538
342
|
const oldThread = args[0];
|
539
343
|
const newThread = args[1];
|
540
344
|
data.oldThread = { ...oldThread };
|
541
345
|
data.newThread = { ...newThread };
|
542
346
|
break;
|
543
347
|
// Moderation events
|
544
|
-
case
|
545
|
-
case
|
348
|
+
case discord_js_1.Events.GuildBanAdd:
|
349
|
+
case discord_js_1.Events.GuildBanRemove:
|
546
350
|
const ban = args[0];
|
547
351
|
data.ban = { ...ban };
|
548
|
-
data.guild = { ...ban.guild };
|
549
|
-
data.user = await enrichMember(ban.user, ban.guild.id);
|
550
352
|
break;
|
551
|
-
case
|
353
|
+
case discord_js_1.Events.GuildAuditLogEntryCreate:
|
552
354
|
const auditLogEntry = args[0]; // GuildAuditLogsEntry
|
553
355
|
const guildAuditLogEntry = args[1]; // Guild
|
554
356
|
// Trích xuất thông tin từ audit log entry
|
555
357
|
data.auditLogEntry = {
|
556
|
-
|
557
|
-
guildId: guildAuditLogEntry.id,
|
558
|
-
action: auditLogEntry.action,
|
559
|
-
executorId: auditLogEntry.executorId,
|
560
|
-
targetId: auditLogEntry.targetId,
|
561
|
-
reason: auditLogEntry.reason || null,
|
562
|
-
createdTimestamp: auditLogEntry.createdTimestamp,
|
358
|
+
...auditLogEntry,
|
563
359
|
};
|
564
360
|
// Fetch thông tin chi tiết của người thực hiện hành động (executor)
|
565
361
|
if (auditLogEntry.executorId) {
|
566
362
|
try {
|
567
363
|
const executor = await guildAuditLogEntry.client.users.fetch(auditLogEntry.executorId);
|
568
364
|
data.executor = {
|
569
|
-
|
570
|
-
username: executor.username,
|
571
|
-
globalName: executor.globalName,
|
572
|
-
tag: executor.tag,
|
365
|
+
...executor,
|
573
366
|
};
|
574
367
|
}
|
575
368
|
catch (error) {
|
@@ -577,112 +370,98 @@ class DiscordEventHandler {
|
|
577
370
|
data.executor = null;
|
578
371
|
}
|
579
372
|
}
|
373
|
+
data.guildAuditLogEntry = { ...guildAuditLogEntry };
|
580
374
|
break;
|
581
375
|
// Emoji & Sticker events
|
582
|
-
case
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
break;
|
589
|
-
case "emojiUpdate":
|
376
|
+
case discord_js_1.Events.GuildEmojiCreate:
|
377
|
+
case discord_js_1.Events.GuildEmojiDelete:
|
378
|
+
const emoji = args[0]; // Emoji
|
379
|
+
data.emoji = { ...emoji };
|
380
|
+
break;
|
381
|
+
case discord_js_1.Events.GuildEmojiUpdate:
|
590
382
|
const oldEmoji = args[0]; // Emoji trước khi thay đổi
|
591
383
|
const newEmoji = args[1]; // Emoji sau khi thay đổi
|
592
384
|
data.oldEmoji = { ...oldEmoji };
|
593
385
|
data.newEmoji = { ...newEmoji };
|
594
386
|
break;
|
595
|
-
case
|
596
|
-
|
597
|
-
|
387
|
+
case discord_js_1.Events.GuildStickerCreate:
|
388
|
+
case discord_js_1.Events.GuildStickerDelete:
|
389
|
+
const sticker = args[0]; // Sticker
|
390
|
+
data.sticker = { ...sticker };
|
598
391
|
break;
|
599
|
-
case
|
600
|
-
const stickerDeleted = args[0]; // Sticker
|
601
|
-
data.sticker = { ...stickerDeleted };
|
602
|
-
break;
|
603
|
-
case "stickerUpdate":
|
392
|
+
case discord_js_1.Events.GuildStickerUpdate:
|
604
393
|
const oldSticker = args[0]; // Sticker trước khi thay đổi
|
605
394
|
const newSticker = args[1]; // Sticker sau khi thay đổi
|
606
395
|
data.oldSticker = { ...oldSticker };
|
607
396
|
data.newSticker = { ...newSticker };
|
608
397
|
break;
|
609
398
|
// Integration & Webhook events
|
610
|
-
case
|
399
|
+
case discord_js_1.Events.GuildIntegrationsUpdate:
|
611
400
|
const guildIntegrations = args[0]; // Guild
|
612
401
|
data.guild = {
|
613
|
-
|
614
|
-
name: guildIntegrations.name,
|
402
|
+
...guildIntegrations,
|
615
403
|
};
|
616
404
|
break;
|
617
|
-
case
|
405
|
+
case discord_js_1.Events.WebhooksUpdate:
|
618
406
|
const webhooksChannel = args[0]; // Channel
|
619
407
|
data.webhooksChannel = {
|
620
408
|
...webhooksChannel,
|
621
409
|
};
|
622
|
-
data.guild = {
|
623
|
-
id: webhooksChannel.guildId,
|
624
|
-
name: webhooksChannel.guild.name,
|
625
|
-
};
|
626
410
|
break;
|
627
411
|
// Invite events
|
628
|
-
case
|
412
|
+
case discord_js_1.Events.InviteCreate:
|
413
|
+
case discord_js_1.Events.InviteDelete:
|
629
414
|
const inviteCreated = args[0]; // Invite
|
630
415
|
data.invite = { ...inviteCreated };
|
631
|
-
data.guild = { ...inviteCreated.guild };
|
632
|
-
break;
|
633
|
-
case "inviteDelete":
|
634
|
-
const inviteDeleted = args[0]; // Invite
|
635
|
-
data.invite = { ...inviteDeleted };
|
636
|
-
data.guild = { ...inviteDeleted.guild };
|
637
416
|
break;
|
638
417
|
// Voice events
|
639
|
-
case
|
418
|
+
case discord_js_1.Events.VoiceChannelEffectSend:
|
640
419
|
const voiceChannelEffectSend = args[0]; // VoiceChannelEffectSend
|
641
420
|
data.voiceChannelEffectSend = { ...voiceChannelEffectSend };
|
642
421
|
break;
|
643
|
-
case
|
422
|
+
case discord_js_1.Events.VoiceStateUpdate:
|
644
423
|
const oldVoiceState = args[0]; // VoiceState trước khi thay đổi
|
645
424
|
const newVoiceState = args[1]; // VoiceState sau khi thay đổi
|
646
425
|
data.oldVoiceState = { ...oldVoiceState };
|
647
426
|
data.newVoiceState = { ...newVoiceState };
|
648
427
|
break;
|
649
428
|
// Presence events
|
650
|
-
case
|
429
|
+
case discord_js_1.Events.PresenceUpdate:
|
651
430
|
const oldPresence = args[0];
|
652
431
|
const newPresence = args[1];
|
653
|
-
|
654
|
-
|
432
|
+
data.oldPresence = oldPresence
|
433
|
+
? {
|
434
|
+
...oldPresence,
|
435
|
+
}
|
436
|
+
: null;
|
655
437
|
data.newPresence = { ...newPresence };
|
656
438
|
break;
|
657
439
|
// Scheduled event events
|
658
|
-
case
|
659
|
-
case
|
660
|
-
|
661
|
-
|
662
|
-
data.
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
440
|
+
case discord_js_1.Events.GuildScheduledEventCreate:
|
441
|
+
case discord_js_1.Events.GuildScheduledEventDelete:
|
442
|
+
const guildScheduled = args[0]; // GuildScheduledEvent
|
443
|
+
data.guildScheduledEvent = { ...guildScheduled };
|
444
|
+
data.guild = { ...guildScheduled.guild };
|
445
|
+
break;
|
446
|
+
case discord_js_1.Events.GuildScheduledEventUpdate:
|
447
|
+
const oldGuildScheduledEvent = args[0]; // GuildScheduledEvent trước khi thay đổi
|
448
|
+
const newGuildScheduledEvent = args[1]; // GuildScheduledEvent sau khi thay đổi
|
449
|
+
data.oldGuildScheduledEvent = oldGuildScheduledEvent
|
450
|
+
? { ...oldGuildScheduledEvent }
|
451
|
+
: null;
|
452
|
+
data.newGuildScheduledEvent = { ...newGuildScheduledEvent };
|
453
|
+
break;
|
454
|
+
case discord_js_1.Events.GuildScheduledEventUserAdd:
|
455
|
+
case discord_js_1.Events.GuildScheduledEventUserRemove:
|
667
456
|
const guildScheduledEvent = args[0];
|
668
457
|
const user = args[1];
|
669
458
|
data.user = { ...user };
|
670
459
|
data.guildScheduledEvent = { ...guildScheduledEvent };
|
671
|
-
data.guild = { ...guildScheduledEvent.guild };
|
672
460
|
break;
|
673
461
|
// Interaction events
|
674
|
-
case
|
462
|
+
case discord_js_1.Events.InteractionCreate:
|
675
463
|
const interaction = args[0];
|
676
464
|
data.interaction = { ...interaction };
|
677
|
-
if (interaction.guild) {
|
678
|
-
data.guild = {
|
679
|
-
id: interaction.guild.id,
|
680
|
-
name: interaction.guild.name,
|
681
|
-
};
|
682
|
-
}
|
683
|
-
if (interaction.user) {
|
684
|
-
data.user = await enrichMember(interaction.user, interaction.guildId || undefined);
|
685
|
-
}
|
686
465
|
break;
|
687
466
|
case discord_js_1.Events.ApplicationCommandPermissionsUpdate:
|
688
467
|
const dataApp = args[0]; // ApplicationCommandPermissionsUpdateData
|
@@ -721,17 +500,17 @@ class DiscordEventHandler {
|
|
721
500
|
const ShardReadyId = args[0];
|
722
501
|
const unavailableGuilds = args[1];
|
723
502
|
data.ShardReadyId = ShardReadyId;
|
724
|
-
data.unavailableGuilds = unavailableGuilds;
|
503
|
+
data.unavailableGuilds = { ...unavailableGuilds };
|
725
504
|
break;
|
726
505
|
case discord_js_1.Events.ShardReconnecting:
|
727
506
|
const ShardReconnectingId = args[0];
|
728
|
-
data.
|
507
|
+
data.id = ShardReconnectingId;
|
729
508
|
break;
|
730
509
|
case discord_js_1.Events.ShardResume:
|
731
510
|
const ShardResumeId = args[0];
|
732
511
|
const replayedEvents = args[1];
|
733
|
-
data.
|
734
|
-
data.
|
512
|
+
data.id = ShardResumeId;
|
513
|
+
data.replayedEvent = replayedEvents;
|
735
514
|
break;
|
736
515
|
// User event
|
737
516
|
case discord_js_1.Events.UserUpdate:
|
@@ -742,21 +521,16 @@ class DiscordEventHandler {
|
|
742
521
|
break;
|
743
522
|
// Member events
|
744
523
|
case discord_js_1.Events.GuildMemberAdd:
|
745
|
-
const memberAdded = args[0]; // GuildMember
|
746
|
-
data.member = { ...memberAdded };
|
747
|
-
break;
|
748
524
|
case discord_js_1.Events.GuildMemberAvailable:
|
749
|
-
const memberAvailable = args[0]; // GuildMember
|
750
|
-
data.member = { ...memberAvailable };
|
751
|
-
break;
|
752
525
|
case discord_js_1.Events.GuildMemberRemove:
|
753
|
-
const
|
754
|
-
data.member = { ...
|
526
|
+
const member = args[0]; // GuildMember
|
527
|
+
data.member = { ...member };
|
755
528
|
break;
|
756
529
|
case discord_js_1.Events.GuildMemberUpdate:
|
757
|
-
const
|
758
|
-
|
759
|
-
data.
|
530
|
+
const oldMemberUpdate = args[0]; // GuildMember trước khi thay đổi
|
531
|
+
const newMemberUpdate = args[1]; // GuildMember sau khi thay đổi
|
532
|
+
data.oldMemberUpdate = { ...oldMemberUpdate };
|
533
|
+
data.newMemberUpdate = { ...newMemberUpdate };
|
760
534
|
break;
|
761
535
|
case discord_js_1.Events.GuildMembersChunk:
|
762
536
|
const membersChunk = args[0];
|
@@ -770,19 +544,13 @@ class DiscordEventHandler {
|
|
770
544
|
case discord_js_1.Events.AutoModerationActionExecution:
|
771
545
|
const action = args[0];
|
772
546
|
data.action = { ...action };
|
773
|
-
if (action.guild) {
|
774
|
-
data.guild = { ...action.guild };
|
775
|
-
}
|
776
547
|
break;
|
777
548
|
case discord_js_1.Events.AutoModerationRuleCreate:
|
549
|
+
case discord_js_1.Events.AutoModerationRuleDelete:
|
778
550
|
const ruleCreated = args[0];
|
779
551
|
data.rule = { ...ruleCreated };
|
780
552
|
break;
|
781
|
-
case discord_js_1.Events.
|
782
|
-
const ruleDeleted = args[0];
|
783
|
-
data.rule = { ...ruleDeleted };
|
784
|
-
break;
|
785
|
-
case "autoModerationRuleUpdate":
|
553
|
+
case discord_js_1.Events.AutoModerationRuleUpdate:
|
786
554
|
const oldRule = args[0]; // AutoModerationRule trước khi thay đổi
|
787
555
|
const newRule = args[1]; // AutoModerationRule sau khi thay đổi
|
788
556
|
data.oldRule = { ...oldRule };
|
@@ -790,17 +558,12 @@ class DiscordEventHandler {
|
|
790
558
|
break;
|
791
559
|
// Poll event
|
792
560
|
case discord_js_1.Events.MessagePollVoteAdd:
|
561
|
+
case discord_js_1.Events.MessagePollVoteRemove:
|
793
562
|
const pollVoteAdd = args[0]; // PollVote
|
794
563
|
const userId = args[1]; // User ID
|
795
564
|
data.pollVote = { ...pollVoteAdd };
|
796
565
|
data.userId = userId;
|
797
566
|
break;
|
798
|
-
case discord_js_1.Events.MessagePollVoteRemove:
|
799
|
-
const pollVoteRemove = args[0]; // PollVote
|
800
|
-
const userIdRemove = args[1]; // User ID
|
801
|
-
data.pollVote = { ...pollVoteRemove };
|
802
|
-
data.userId = userIdRemove;
|
803
|
-
break;
|
804
567
|
default:
|
805
568
|
data.eventData = args;
|
806
569
|
break;
|