@hardlydifficult/chat 1.1.161 → 1.1.163
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/Channel.d.ts +8 -1
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +17 -2
- package/dist/Channel.js.map +1 -1
- package/dist/Thread.d.ts +8 -2
- package/dist/Thread.d.ts.map +1 -1
- package/dist/Thread.js +14 -1
- package/dist/Thread.js.map +1 -1
- package/dist/discord/DiscordChatClient.d.ts +2 -111
- package/dist/discord/DiscordChatClient.d.ts.map +1 -1
- package/dist/discord/DiscordChatClient.js +20 -251
- package/dist/discord/DiscordChatClient.js.map +1 -1
- package/dist/discord/eventHandlers.d.ts +16 -0
- package/dist/discord/eventHandlers.d.ts.map +1 -0
- package/dist/discord/eventHandlers.js +113 -0
- package/dist/discord/eventHandlers.js.map +1 -0
- package/dist/discord/messageOperations.d.ts +19 -0
- package/dist/discord/messageOperations.d.ts.map +1 -0
- package/dist/discord/messageOperations.js +43 -0
- package/dist/discord/messageOperations.js.map +1 -0
- package/dist/duplicateCounter.d.ts +27 -0
- package/dist/duplicateCounter.d.ts.map +1 -0
- package/dist/duplicateCounter.js +53 -0
- package/dist/duplicateCounter.js.map +1 -0
- package/dist/slack/SlackChatClient.d.ts +1 -0
- package/dist/slack/SlackChatClient.d.ts.map +1 -1
- package/dist/slack/SlackChatClient.js +6 -0
- package/dist/slack/SlackChatClient.js.map +1 -1
- package/dist/slack/getMessages.d.ts +5 -0
- package/dist/slack/getMessages.d.ts.map +1 -1
- package/dist/slack/getMessages.js +59 -0
- package/dist/slack/getMessages.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -4,17 +4,13 @@ exports.DiscordChatClient = void 0;
|
|
|
4
4
|
const discord_js_1 = require("discord.js");
|
|
5
5
|
const Channel_js_1 = require("../Channel.js");
|
|
6
6
|
const ChatClient_js_1 = require("../ChatClient.js");
|
|
7
|
-
const
|
|
8
|
-
const discord_js_2 = require("../outputters/discord.js");
|
|
9
|
-
const utils_js_1 = require("../utils.js");
|
|
10
|
-
const buildMessagePayload_js_1 = require("./buildMessagePayload.js");
|
|
7
|
+
const eventHandlers_js_1 = require("./eventHandlers.js");
|
|
11
8
|
const fetchChannelMembers_js_1 = require("./fetchChannelMembers.js");
|
|
12
9
|
const getMessages_js_1 = require("./getMessages.js");
|
|
10
|
+
const messageOperations_js_1 = require("./messageOperations.js");
|
|
13
11
|
const reactionOperations_js_1 = require("./reactionOperations.js");
|
|
14
12
|
const threadOperations_js_1 = require("./threadOperations.js");
|
|
15
|
-
/**
|
|
16
|
-
* Discord chat client implementation using discord.js
|
|
17
|
-
*/
|
|
13
|
+
/** Discord chat client implementation using discord.js. */
|
|
18
14
|
class DiscordChatClient extends ChatClient_js_1.ChatClient {
|
|
19
15
|
client;
|
|
20
16
|
reactionListeners = new Map();
|
|
@@ -27,134 +23,18 @@ class DiscordChatClient extends ChatClient_js_1.ChatClient {
|
|
|
27
23
|
super(config);
|
|
28
24
|
this.token = config.token ?? process.env.DISCORD_TOKEN ?? "";
|
|
29
25
|
this.guildId = config.guildId ?? process.env.DISCORD_GUILD_ID ?? "";
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
this.setupReactionListener();
|
|
39
|
-
this.setupMessageListener();
|
|
40
|
-
this.setupConnectionResilience();
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Set up the global reaction listener that routes events to channel-specific callbacks
|
|
44
|
-
*/
|
|
45
|
-
setupReactionListener() {
|
|
46
|
-
this.client.on("messageReactionAdd", (reaction, user) => {
|
|
47
|
-
void (async () => {
|
|
48
|
-
// Handle partial reactions
|
|
49
|
-
if (reaction.partial) {
|
|
50
|
-
try {
|
|
51
|
-
await reaction.fetch();
|
|
52
|
-
}
|
|
53
|
-
catch (error) {
|
|
54
|
-
console.error("Failed to fetch partial reaction:", error);
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
const { channelId } = reaction.message;
|
|
59
|
-
const callbacks = this.reactionListeners.get(channelId);
|
|
60
|
-
if (!callbacks || callbacks.size === 0) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
const reactionUser = {
|
|
64
|
-
id: user.id,
|
|
65
|
-
username: user.username ?? undefined,
|
|
66
|
-
};
|
|
67
|
-
const event = {
|
|
68
|
-
emoji: reaction.emoji.name ?? reaction.emoji.id ?? "",
|
|
69
|
-
user: reactionUser,
|
|
70
|
-
messageId: reaction.message.id,
|
|
71
|
-
channelId,
|
|
72
|
-
timestamp: new Date(),
|
|
73
|
-
};
|
|
74
|
-
for (const callback of callbacks) {
|
|
75
|
-
try {
|
|
76
|
-
await callback(event);
|
|
77
|
-
}
|
|
78
|
-
catch (error) {
|
|
79
|
-
console.error("Reaction callback error:", error);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
})();
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Set up the global message listener that routes events to channel-specific callbacks
|
|
87
|
-
*/
|
|
88
|
-
setupMessageListener() {
|
|
89
|
-
this.client.on("messageCreate", (message) => {
|
|
90
|
-
void (async () => {
|
|
91
|
-
// Ignore messages from the bot itself
|
|
92
|
-
if (message.author?.id === this.client.user?.id) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
const { channelId } = message;
|
|
96
|
-
const callbacks = this.messageListeners.get(channelId);
|
|
97
|
-
if (!callbacks || callbacks.size === 0) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
const author = {
|
|
101
|
-
id: message.author?.id ?? "",
|
|
102
|
-
username: message.author?.username ?? undefined,
|
|
103
|
-
};
|
|
104
|
-
const attachments = [];
|
|
105
|
-
for (const [, attachment] of message.attachments) {
|
|
106
|
-
attachments.push({
|
|
107
|
-
url: attachment.url,
|
|
108
|
-
name: attachment.name,
|
|
109
|
-
contentType: attachment.contentType ?? undefined,
|
|
110
|
-
size: attachment.size,
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
const event = {
|
|
114
|
-
id: message.id,
|
|
115
|
-
// Use cleanContent to resolve Discord mentions (e.g. <@170624100316741632>)
|
|
116
|
-
// to human-readable names (e.g. @hardlydifficult) before forwarding to
|
|
117
|
-
// command handlers and AI prompts.
|
|
118
|
-
content: message.cleanContent ?? message.content ?? "",
|
|
119
|
-
author,
|
|
120
|
-
channelId,
|
|
121
|
-
timestamp: message.createdAt,
|
|
122
|
-
attachments,
|
|
123
|
-
};
|
|
124
|
-
for (const callback of callbacks) {
|
|
125
|
-
try {
|
|
126
|
-
await callback(event);
|
|
127
|
-
}
|
|
128
|
-
catch (error) {
|
|
129
|
-
console.error("Message callback error:", error);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
})();
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Set up connection event forwarding.
|
|
137
|
-
* discord.js handles reconnection internally — these callbacks are for observability.
|
|
138
|
-
*/
|
|
139
|
-
setupConnectionResilience() {
|
|
140
|
-
this.client.on("shardDisconnect", (_event, shardId) => {
|
|
141
|
-
const reason = `Shard ${String(shardId)} disconnected`;
|
|
142
|
-
for (const callback of this.disconnectCallbacks) {
|
|
143
|
-
void Promise.resolve(callback(reason)).catch((err) => {
|
|
144
|
-
console.error("Disconnect callback error:", err);
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
this.client.on("shardError", (error, shardId) => {
|
|
149
|
-
const wrappedError = error instanceof Error
|
|
150
|
-
? error
|
|
151
|
-
: new Error(`Shard ${String(shardId)} error: ${String(error)}`);
|
|
152
|
-
for (const callback of this.errorCallbacks) {
|
|
153
|
-
void Promise.resolve(callback(wrappedError)).catch((err) => {
|
|
154
|
-
console.error("Error callback error:", err);
|
|
155
|
-
});
|
|
156
|
-
}
|
|
26
|
+
this.client = new discord_js_1.Client({
|
|
27
|
+
intents: [
|
|
28
|
+
discord_js_1.GatewayIntentBits.Guilds,
|
|
29
|
+
discord_js_1.GatewayIntentBits.GuildMembers,
|
|
30
|
+
discord_js_1.GatewayIntentBits.GuildMessages,
|
|
31
|
+
discord_js_1.GatewayIntentBits.GuildMessageReactions,
|
|
32
|
+
discord_js_1.GatewayIntentBits.MessageContent,
|
|
33
|
+
],
|
|
157
34
|
});
|
|
35
|
+
(0, eventHandlers_js_1.setupReactionListener)(this.client, this.reactionListeners);
|
|
36
|
+
(0, eventHandlers_js_1.setupMessageListener)(this.client, this.messageListeners);
|
|
37
|
+
(0, eventHandlers_js_1.setupConnectionResilience)(this.client, this.disconnectCallbacks, this.errorCallbacks);
|
|
158
38
|
}
|
|
159
39
|
async fetchTextChannel(channelId) {
|
|
160
40
|
const channel = await this.client.channels.fetch(channelId);
|
|
@@ -183,9 +63,6 @@ class DiscordChatClient extends ChatClient_js_1.ChatClient {
|
|
|
183
63
|
operations: this,
|
|
184
64
|
});
|
|
185
65
|
}
|
|
186
|
-
/**
|
|
187
|
-
* Disconnect from Discord
|
|
188
|
-
*/
|
|
189
66
|
async disconnect() {
|
|
190
67
|
this.reactionListeners.clear();
|
|
191
68
|
this.messageListeners.clear();
|
|
@@ -194,90 +71,30 @@ class DiscordChatClient extends ChatClient_js_1.ChatClient {
|
|
|
194
71
|
this.meValue = null;
|
|
195
72
|
await this.client.destroy();
|
|
196
73
|
}
|
|
197
|
-
/**
|
|
198
|
-
* Post a message to a Discord channel
|
|
199
|
-
* @param channelId - Channel to post to
|
|
200
|
-
* @param content - Message content (string or Document)
|
|
201
|
-
* @param options - Optional options including threadTs for replies
|
|
202
|
-
* @returns Message data with ID
|
|
203
|
-
*/
|
|
204
74
|
async postMessage(channelId, content, options) {
|
|
205
75
|
const channel = await this.fetchTextChannel(channelId);
|
|
206
|
-
|
|
207
|
-
const message = await channel.send(payload);
|
|
208
|
-
return { id: message.id, channelId, platform: "discord" };
|
|
76
|
+
return (0, messageOperations_js_1.postMessage)(channel, channelId, content, options);
|
|
209
77
|
}
|
|
210
|
-
/**
|
|
211
|
-
* Update a message in a Discord channel
|
|
212
|
-
* @param messageId - ID of the message to update
|
|
213
|
-
* @param channelId - Channel containing the message
|
|
214
|
-
* @param content - New message content (string or Document)
|
|
215
|
-
*/
|
|
216
78
|
async updateMessage(messageId, channelId, content) {
|
|
217
79
|
const channel = await this.fetchTextChannel(channelId);
|
|
218
|
-
|
|
219
|
-
if ((0, utils_js_1.isDocument)(content)) {
|
|
220
|
-
const embed = (0, discord_js_2.toDiscordEmbed)(content.getBlocks());
|
|
221
|
-
await message.edit({ embeds: [embed] });
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
// Clear embeds when switching to text; truncate if over limit
|
|
225
|
-
const limit = constants_js_1.MESSAGE_LIMITS.discord;
|
|
226
|
-
const text = content.length > limit
|
|
227
|
-
? `${content.slice(0, limit - 1)}\u2026`
|
|
228
|
-
: content;
|
|
229
|
-
await message.edit({ content: text, embeds: [] });
|
|
230
|
-
}
|
|
80
|
+
return (0, messageOperations_js_1.updateMessage)(channel, messageId, content);
|
|
231
81
|
}
|
|
232
|
-
/**
|
|
233
|
-
* Delete a message and its thread replies from a Discord channel
|
|
234
|
-
* @param messageId - ID of the message to delete
|
|
235
|
-
* @param channelId - Channel containing the message
|
|
236
|
-
*/
|
|
237
82
|
async deleteMessage(messageId, channelId, options) {
|
|
238
83
|
const channel = await this.fetchTextChannel(channelId);
|
|
239
|
-
|
|
240
|
-
// Delete the thread (and all its messages) if one exists
|
|
241
|
-
if (options?.cascadeReplies !== false && message.thread) {
|
|
242
|
-
await message.thread.delete();
|
|
243
|
-
}
|
|
244
|
-
await message.delete();
|
|
84
|
+
return (0, messageOperations_js_1.deleteMessage)(channel, messageId, options);
|
|
245
85
|
}
|
|
246
|
-
/**
|
|
247
|
-
* Add a reaction to a message
|
|
248
|
-
* @param messageId - Message to react to
|
|
249
|
-
* @param channelId - Channel containing the message
|
|
250
|
-
* @param emoji - Emoji to add
|
|
251
|
-
*/
|
|
252
86
|
async addReaction(messageId, channelId, emoji) {
|
|
253
87
|
const channel = await this.fetchTextChannel(channelId);
|
|
254
88
|
await (0, reactionOperations_js_1.addReaction)(channel, messageId, emoji);
|
|
255
89
|
}
|
|
256
|
-
/**
|
|
257
|
-
* Remove the bot's own reaction from a message
|
|
258
|
-
* @param messageId - Message to remove reaction from
|
|
259
|
-
* @param channelId - Channel containing the message
|
|
260
|
-
* @param emoji - Emoji to remove
|
|
261
|
-
*/
|
|
262
90
|
async removeReaction(messageId, channelId, emoji) {
|
|
263
91
|
const channel = await this.fetchTextChannel(channelId);
|
|
264
92
|
await (0, reactionOperations_js_1.removeReaction)(channel, messageId, emoji);
|
|
265
93
|
}
|
|
266
|
-
/**
|
|
267
|
-
* Remove all reactions from a message
|
|
268
|
-
* @param messageId - Message to clear reactions from
|
|
269
|
-
* @param channelId - Channel containing the message
|
|
270
|
-
*/
|
|
271
94
|
async removeAllReactions(messageId, channelId) {
|
|
272
95
|
const channel = await this.fetchTextChannel(channelId);
|
|
273
96
|
await (0, reactionOperations_js_1.removeAllReactions)(channel, messageId);
|
|
274
97
|
}
|
|
275
|
-
/**
|
|
276
|
-
* Subscribe to reaction events on a channel
|
|
277
|
-
* @param channelId - Channel to monitor
|
|
278
|
-
* @param callback - Function to call when reactions are added
|
|
279
|
-
* @returns Unsubscribe function
|
|
280
|
-
*/
|
|
281
98
|
subscribeToReactions(channelId, callback) {
|
|
282
99
|
let callbacks = this.reactionListeners.get(channelId);
|
|
283
100
|
if (!callbacks) {
|
|
@@ -292,12 +109,6 @@ class DiscordChatClient extends ChatClient_js_1.ChatClient {
|
|
|
292
109
|
}
|
|
293
110
|
};
|
|
294
111
|
}
|
|
295
|
-
/**
|
|
296
|
-
* Subscribe to incoming message events on a channel
|
|
297
|
-
* @param channelId - Channel to monitor
|
|
298
|
-
* @param callback - Function to call when messages are received
|
|
299
|
-
* @returns Unsubscribe function
|
|
300
|
-
*/
|
|
301
112
|
subscribeToMessages(channelId, callback) {
|
|
302
113
|
let callbacks = this.messageListeners.get(channelId);
|
|
303
114
|
if (!callbacks) {
|
|
@@ -312,32 +123,14 @@ class DiscordChatClient extends ChatClient_js_1.ChatClient {
|
|
|
312
123
|
}
|
|
313
124
|
};
|
|
314
125
|
}
|
|
315
|
-
/**
|
|
316
|
-
* Send a typing indicator in a Discord channel
|
|
317
|
-
* @param channelId - Channel to send typing indicator in
|
|
318
|
-
*/
|
|
319
126
|
async sendTyping(channelId) {
|
|
320
127
|
const channel = await this.fetchTextChannel(channelId);
|
|
321
128
|
await channel.sendTyping();
|
|
322
129
|
}
|
|
323
|
-
/**
|
|
324
|
-
* Create a thread from a message
|
|
325
|
-
* @param messageId - Message to create thread from
|
|
326
|
-
* @param channelId - Channel containing the message
|
|
327
|
-
* @param name - Thread name
|
|
328
|
-
* @param autoArchiveDuration - Auto-archive duration in minutes (60, 1440, 4320, 10080)
|
|
329
|
-
* @returns Thread data
|
|
330
|
-
*/
|
|
331
130
|
async startThread(messageId, channelId, name, autoArchiveDuration) {
|
|
332
131
|
const channel = await this.fetchTextChannel(channelId);
|
|
333
132
|
return (0, threadOperations_js_1.startThread)(channel, messageId, channelId, name, autoArchiveDuration);
|
|
334
133
|
}
|
|
335
|
-
/**
|
|
336
|
-
* Bulk delete messages in a Discord channel
|
|
337
|
-
* @param channelId - Channel to delete messages from
|
|
338
|
-
* @param count - Number of recent messages to delete (max 100)
|
|
339
|
-
* @returns Number of messages actually deleted
|
|
340
|
-
*/
|
|
341
134
|
async bulkDelete(channelId, count) {
|
|
342
135
|
const channel = await this.fetchTextChannel(channelId);
|
|
343
136
|
if (!(channel instanceof discord_js_1.TextChannel)) {
|
|
@@ -350,11 +143,6 @@ class DiscordChatClient extends ChatClient_js_1.ChatClient {
|
|
|
350
143
|
const channel = await this.fetchTextChannel(channelId);
|
|
351
144
|
return (0, getMessages_js_1.getMessages)(channel, channelId, options, this.me?.id);
|
|
352
145
|
}
|
|
353
|
-
/**
|
|
354
|
-
* Get all threads (active and archived) in a Discord channel
|
|
355
|
-
* @param channelId - Channel to get threads from
|
|
356
|
-
* @returns Array of thread data
|
|
357
|
-
*/
|
|
358
146
|
async getThreads(channelId) {
|
|
359
147
|
const channel = await this.fetchTextChannel(channelId);
|
|
360
148
|
if (!(channel instanceof discord_js_1.TextChannel)) {
|
|
@@ -362,24 +150,15 @@ class DiscordChatClient extends ChatClient_js_1.ChatClient {
|
|
|
362
150
|
}
|
|
363
151
|
return (0, threadOperations_js_1.getThreads)(channel, channelId);
|
|
364
152
|
}
|
|
365
|
-
/**
|
|
366
|
-
* Delete a thread in a Discord channel
|
|
367
|
-
* @param threadId - ID of the thread to delete
|
|
368
|
-
*/
|
|
369
153
|
async deleteThread(threadId, _channelId) {
|
|
370
154
|
await (0, threadOperations_js_1.deleteThread)(this.client, threadId);
|
|
371
155
|
}
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
*/
|
|
156
|
+
async getThreadMessages(threadId, _channelId, options = {}) {
|
|
157
|
+
return this.getMessages(threadId, options);
|
|
158
|
+
}
|
|
376
159
|
async postToThread(threadId, _channelId, content, options) {
|
|
377
160
|
return this.postMessage(threadId, content, { files: options?.files });
|
|
378
161
|
}
|
|
379
|
-
/**
|
|
380
|
-
* Subscribe to messages in a specific thread
|
|
381
|
-
* In Discord, threadId IS the thread channel — reuse message subscription
|
|
382
|
-
*/
|
|
383
162
|
subscribeToThread(threadId, _channelId, callback) {
|
|
384
163
|
return this.subscribeToMessages(threadId, callback);
|
|
385
164
|
}
|
|
@@ -390,22 +169,12 @@ class DiscordChatClient extends ChatClient_js_1.ChatClient {
|
|
|
390
169
|
}
|
|
391
170
|
return (0, fetchChannelMembers_js_1.fetchChannelMembers)(channel);
|
|
392
171
|
}
|
|
393
|
-
/**
|
|
394
|
-
* Register a callback for disconnect events
|
|
395
|
-
* @param callback - Function to call when disconnected
|
|
396
|
-
* @returns Unsubscribe function
|
|
397
|
-
*/
|
|
398
172
|
onDisconnect(callback) {
|
|
399
173
|
this.disconnectCallbacks.add(callback);
|
|
400
174
|
return () => {
|
|
401
175
|
this.disconnectCallbacks.delete(callback);
|
|
402
176
|
};
|
|
403
177
|
}
|
|
404
|
-
/**
|
|
405
|
-
* Register a callback for error events
|
|
406
|
-
* @param callback - Function to call when an error occurs
|
|
407
|
-
* @returns Unsubscribe function
|
|
408
|
-
*/
|
|
409
178
|
onError(callback) {
|
|
410
179
|
this.errorCallbacks.add(callback);
|
|
411
180
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiscordChatClient.js","sourceRoot":"","sources":["../../src/discord/DiscordChatClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DiscordChatClient.js","sourceRoot":"","sources":["../../src/discord/DiscordChatClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Client } from "discord.js";
|
|
2
|
+
import type { DisconnectCallback, ErrorCallback, MessageCallback, ReactionCallback } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Wire the discord.js `messageReactionAdd` event to per-channel callbacks.
|
|
5
|
+
*/
|
|
6
|
+
export declare function setupReactionListener(client: Client, listeners: Map<string, Set<ReactionCallback>>): void;
|
|
7
|
+
/**
|
|
8
|
+
* Wire the discord.js `messageCreate` event to per-channel callbacks.
|
|
9
|
+
* Messages from the bot itself are ignored.
|
|
10
|
+
*/
|
|
11
|
+
export declare function setupMessageListener(client: Client, listeners: Map<string, Set<MessageCallback>>): void;
|
|
12
|
+
/**
|
|
13
|
+
* Forward discord.js shard disconnect / error events to the provided callbacks.
|
|
14
|
+
*/
|
|
15
|
+
export declare function setupConnectionResilience(client: Client, disconnectCallbacks: Set<DisconnectCallback>, errorCallbacks: Set<ErrorCallback>): void;
|
|
16
|
+
//# sourceMappingURL=eventHandlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventHandlers.d.ts","sourceRoot":"","sources":["../../src/discord/eventHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAOP,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAEV,kBAAkB,EAClB,aAAa,EACb,eAAe,EAEf,gBAAgB,EAEjB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAC5C,IAAI,CAyCN;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,GAC3C,IAAI,CA+CN;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,mBAAmB,EAAE,GAAG,CAAC,kBAAkB,CAAC,EAC5C,cAAc,EAAE,GAAG,CAAC,aAAa,CAAC,GACjC,IAAI,CAqBN"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setupReactionListener = setupReactionListener;
|
|
4
|
+
exports.setupMessageListener = setupMessageListener;
|
|
5
|
+
exports.setupConnectionResilience = setupConnectionResilience;
|
|
6
|
+
/**
|
|
7
|
+
* Wire the discord.js `messageReactionAdd` event to per-channel callbacks.
|
|
8
|
+
*/
|
|
9
|
+
function setupReactionListener(client, listeners) {
|
|
10
|
+
client.on("messageReactionAdd", (reaction, user) => {
|
|
11
|
+
void (async () => {
|
|
12
|
+
if (reaction.partial) {
|
|
13
|
+
try {
|
|
14
|
+
await reaction.fetch();
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
console.error("Failed to fetch partial reaction:", error);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const { channelId } = reaction.message;
|
|
22
|
+
const callbacks = listeners.get(channelId);
|
|
23
|
+
if (!callbacks || callbacks.size === 0) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const event = {
|
|
27
|
+
emoji: reaction.emoji.name ?? reaction.emoji.id ?? "",
|
|
28
|
+
user: { id: user.id, username: user.username ?? undefined },
|
|
29
|
+
messageId: reaction.message.id,
|
|
30
|
+
channelId,
|
|
31
|
+
timestamp: new Date(),
|
|
32
|
+
};
|
|
33
|
+
for (const callback of callbacks) {
|
|
34
|
+
try {
|
|
35
|
+
await callback(event);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
console.error("Reaction callback error:", error);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
})();
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Wire the discord.js `messageCreate` event to per-channel callbacks.
|
|
46
|
+
* Messages from the bot itself are ignored.
|
|
47
|
+
*/
|
|
48
|
+
function setupMessageListener(client, listeners) {
|
|
49
|
+
client.on("messageCreate", (message) => {
|
|
50
|
+
void (async () => {
|
|
51
|
+
if (message.author?.id === client.user?.id) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const { channelId } = message;
|
|
55
|
+
const callbacks = listeners.get(channelId);
|
|
56
|
+
if (!callbacks || callbacks.size === 0) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const attachments = [];
|
|
60
|
+
for (const [, attachment] of message.attachments) {
|
|
61
|
+
attachments.push({
|
|
62
|
+
url: attachment.url,
|
|
63
|
+
name: attachment.name,
|
|
64
|
+
contentType: attachment.contentType ?? undefined,
|
|
65
|
+
size: attachment.size,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
const event = {
|
|
69
|
+
id: message.id,
|
|
70
|
+
content: message.cleanContent ?? message.content ?? "",
|
|
71
|
+
author: {
|
|
72
|
+
id: message.author?.id ?? "",
|
|
73
|
+
username: message.author?.username ?? undefined,
|
|
74
|
+
},
|
|
75
|
+
channelId,
|
|
76
|
+
timestamp: message.createdAt,
|
|
77
|
+
attachments,
|
|
78
|
+
};
|
|
79
|
+
for (const callback of callbacks) {
|
|
80
|
+
try {
|
|
81
|
+
await callback(event);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
console.error("Message callback error:", error);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
})();
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Forward discord.js shard disconnect / error events to the provided callbacks.
|
|
92
|
+
*/
|
|
93
|
+
function setupConnectionResilience(client, disconnectCallbacks, errorCallbacks) {
|
|
94
|
+
client.on("shardDisconnect", (_event, shardId) => {
|
|
95
|
+
const reason = `Shard ${String(shardId)} disconnected`;
|
|
96
|
+
for (const callback of disconnectCallbacks) {
|
|
97
|
+
void Promise.resolve(callback(reason)).catch((err) => {
|
|
98
|
+
console.error("Disconnect callback error:", err);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
client.on("shardError", (error, shardId) => {
|
|
103
|
+
const wrappedError = error instanceof Error
|
|
104
|
+
? error
|
|
105
|
+
: new Error(`Shard ${String(shardId)} error: ${String(error)}`);
|
|
106
|
+
for (const callback of errorCallbacks) {
|
|
107
|
+
void Promise.resolve(callback(wrappedError)).catch((err) => {
|
|
108
|
+
console.error("Error callback error:", err);
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=eventHandlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventHandlers.js","sourceRoot":"","sources":["../../src/discord/eventHandlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { TextChannel, ThreadChannel } from "discord.js";
|
|
2
|
+
import type { DeleteMessageOptions, FileAttachment, MessageContent, MessageData } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Post a message to a Discord channel or thread.
|
|
5
|
+
*/
|
|
6
|
+
export declare function postMessage(channel: TextChannel | ThreadChannel, channelId: string, content: MessageContent, options?: {
|
|
7
|
+
threadTs?: string;
|
|
8
|
+
files?: FileAttachment[];
|
|
9
|
+
linkPreviews?: boolean;
|
|
10
|
+
}): Promise<MessageData>;
|
|
11
|
+
/**
|
|
12
|
+
* Edit an existing message's content.
|
|
13
|
+
*/
|
|
14
|
+
export declare function updateMessage(channel: TextChannel | ThreadChannel, messageId: string, content: MessageContent): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Delete a message and optionally its thread replies.
|
|
17
|
+
*/
|
|
18
|
+
export declare function deleteMessage(channel: TextChannel | ThreadChannel, messageId: string, options?: DeleteMessageOptions): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=messageOperations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageOperations.d.ts","sourceRoot":"","sources":["../../src/discord/messageOperations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAI7D,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,WAAW,EACZ,MAAM,aAAa,CAAC;AAKrB;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,GAAG,aAAa,EACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GACA,OAAO,CAAC,WAAW,CAAC,CAItB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,GAAG,aAAa,EACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,GAAG,aAAa,EACpC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAMf"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.postMessage = postMessage;
|
|
4
|
+
exports.updateMessage = updateMessage;
|
|
5
|
+
exports.deleteMessage = deleteMessage;
|
|
6
|
+
const constants_js_1 = require("../constants.js");
|
|
7
|
+
const discord_js_1 = require("../outputters/discord.js");
|
|
8
|
+
const utils_js_1 = require("../utils.js");
|
|
9
|
+
const buildMessagePayload_js_1 = require("./buildMessagePayload.js");
|
|
10
|
+
/**
|
|
11
|
+
* Post a message to a Discord channel or thread.
|
|
12
|
+
*/
|
|
13
|
+
async function postMessage(channel, channelId, content, options) {
|
|
14
|
+
const payload = (0, buildMessagePayload_js_1.buildMessagePayload)(content, options);
|
|
15
|
+
const message = await channel.send(payload);
|
|
16
|
+
return { id: message.id, channelId, platform: "discord" };
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Edit an existing message's content.
|
|
20
|
+
*/
|
|
21
|
+
async function updateMessage(channel, messageId, content) {
|
|
22
|
+
const message = await channel.messages.fetch(messageId);
|
|
23
|
+
if ((0, utils_js_1.isDocument)(content)) {
|
|
24
|
+
const embed = (0, discord_js_1.toDiscordEmbed)(content.getBlocks());
|
|
25
|
+
await message.edit({ embeds: [embed] });
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const limit = constants_js_1.MESSAGE_LIMITS.discord;
|
|
29
|
+
const text = content.length > limit ? `${content.slice(0, limit - 1)}\u2026` : content;
|
|
30
|
+
await message.edit({ content: text, embeds: [] });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Delete a message and optionally its thread replies.
|
|
35
|
+
*/
|
|
36
|
+
async function deleteMessage(channel, messageId, options) {
|
|
37
|
+
const message = await channel.messages.fetch(messageId);
|
|
38
|
+
if (options?.cascadeReplies !== false && message.thread) {
|
|
39
|
+
await message.thread.delete();
|
|
40
|
+
}
|
|
41
|
+
await message.delete();
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=messageOperations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageOperations.js","sourceRoot":"","sources":["../../src/discord/messageOperations.ts"],"names":[],"mappings":";;AAiBA,kCAaC;AAKD,sCAgBC;AAKD,sCAUC;AAhED,kDAAiD;AACjD,yDAA0D;AAO1D,0CAAyC;AAEzC,qEAA+D;AAE/D;;GAEG;AACI,KAAK,UAAU,WAAW,CAC/B,OAAoC,EACpC,SAAiB,EACjB,OAAuB,EACvB,OAIC;IAED,MAAM,OAAO,GAAG,IAAA,4CAAmB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAC5D,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,aAAa,CACjC,OAAoC,EACpC,SAAiB,EACjB,OAAuB;IAEvB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAExD,IAAI,IAAA,qBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAA,2BAAc,EAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAClD,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,6BAAc,CAAC,OAAO,CAAC;QACrC,MAAM,IAAI,GACR,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;QAC5E,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,aAAa,CACjC,OAAoC,EACpC,SAAiB,EACjB,OAA8B;IAE9B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,OAAO,EAAE,cAAc,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACxD,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IACD,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { MessageContent, MessageData, MessageQueryOptions } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse a message's content to extract the base text and duplicate count.
|
|
4
|
+
* "hello" → { baseContent: "hello", count: 1 }
|
|
5
|
+
* "hello x2" → { baseContent: "hello", count: 2 }
|
|
6
|
+
* "hello x5" → { baseContent: "hello", count: 5 }
|
|
7
|
+
*/
|
|
8
|
+
export declare function parseDuplicateCount(content: string): {
|
|
9
|
+
baseContent: string;
|
|
10
|
+
count: number;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Try to deduplicate a message against the most recent bot message.
|
|
14
|
+
*
|
|
15
|
+
* If the last bot message has the same base content, edits it to increment
|
|
16
|
+
* the counter (e.g. "hello" → "hello x2" → "hello x3") and returns
|
|
17
|
+
* the original message data so that threading still points at the right place.
|
|
18
|
+
*
|
|
19
|
+
* Returns null when no dedup occurred and the caller should post normally.
|
|
20
|
+
*/
|
|
21
|
+
export declare function tryDeduplicateMessage(content: MessageContent, getLastBotMessage: (options: MessageQueryOptions) => Promise<MessageData[]>, updateMessage: (messageId: string, channelId: string, content: MessageContent) => Promise<void>, options?: {
|
|
22
|
+
files?: {
|
|
23
|
+
content: Buffer | string;
|
|
24
|
+
name: string;
|
|
25
|
+
}[];
|
|
26
|
+
}): Promise<MessageData | null>;
|
|
27
|
+
//# sourceMappingURL=duplicateCounter.d.ts.map
|