@hardlydifficult/chat 1.1.19 → 1.1.20

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.
Files changed (44) hide show
  1. package/README.md +39 -3
  2. package/dist/Channel.d.ts +22 -0
  3. package/dist/Channel.d.ts.map +1 -1
  4. package/dist/Channel.js +46 -4
  5. package/dist/Channel.js.map +1 -1
  6. package/dist/Message.d.ts +7 -7
  7. package/dist/Message.d.ts.map +1 -1
  8. package/dist/Message.js +5 -6
  9. package/dist/Message.js.map +1 -1
  10. package/dist/Thread.d.ts +47 -5
  11. package/dist/Thread.d.ts.map +1 -1
  12. package/dist/Thread.js +62 -6
  13. package/dist/Thread.js.map +1 -1
  14. package/dist/discord/DiscordChatClient.d.ts +12 -0
  15. package/dist/discord/DiscordChatClient.d.ts.map +1 -1
  16. package/dist/discord/DiscordChatClient.js +38 -73
  17. package/dist/discord/DiscordChatClient.js.map +1 -1
  18. package/dist/discord/buildMessagePayload.d.ts +23 -0
  19. package/dist/discord/buildMessagePayload.d.ts.map +1 -0
  20. package/dist/discord/buildMessagePayload.js +41 -0
  21. package/dist/discord/buildMessagePayload.js.map +1 -0
  22. package/dist/discord/threadOperations.d.ts +16 -0
  23. package/dist/discord/threadOperations.d.ts.map +1 -0
  24. package/dist/discord/threadOperations.js +48 -0
  25. package/dist/discord/threadOperations.js.map +1 -0
  26. package/dist/slack/SlackChatClient.d.ts +13 -0
  27. package/dist/slack/SlackChatClient.d.ts.map +1 -1
  28. package/dist/slack/SlackChatClient.js +66 -59
  29. package/dist/slack/SlackChatClient.js.map +1 -1
  30. package/dist/slack/buildMessageEvent.d.ts +23 -0
  31. package/dist/slack/buildMessageEvent.d.ts.map +1 -0
  32. package/dist/slack/buildMessageEvent.js +44 -0
  33. package/dist/slack/buildMessageEvent.js.map +1 -0
  34. package/dist/slack/getThreads.d.ts +7 -0
  35. package/dist/slack/getThreads.d.ts.map +1 -0
  36. package/dist/slack/getThreads.js +29 -0
  37. package/dist/slack/getThreads.js.map +1 -0
  38. package/dist/types.d.ts +2 -0
  39. package/dist/types.d.ts.map +1 -1
  40. package/package.json +3 -3
  41. package/dist/discord/deleteThread.d.ts +0 -7
  42. package/dist/discord/deleteThread.d.ts.map +0 -1
  43. package/dist/discord/deleteThread.js +0 -16
  44. package/dist/discord/deleteThread.js.map +0 -1
@@ -6,8 +6,9 @@ const Channel_js_1 = require("../Channel.js");
6
6
  const ChatClient_js_1 = require("../ChatClient.js");
7
7
  const discord_js_2 = require("../outputters/discord.js");
8
8
  const utils_js_1 = require("../utils.js");
9
- const deleteThread_js_1 = require("./deleteThread.js");
9
+ const buildMessagePayload_js_1 = require("./buildMessagePayload.js");
10
10
  const fetchChannelMembers_js_1 = require("./fetchChannelMembers.js");
11
+ const threadOperations_js_1 = require("./threadOperations.js");
11
12
  /**
12
13
  * Discord chat client implementation using discord.js
13
14
  */
@@ -151,7 +152,8 @@ class DiscordChatClient extends ChatClient_js_1.ChatClient {
151
152
  }
152
153
  async fetchTextChannel(channelId) {
153
154
  const channel = await this.client.channels.fetch(channelId);
154
- if (!channel || !(channel instanceof discord_js_1.TextChannel)) {
155
+ if (!channel ||
156
+ (!(channel instanceof discord_js_1.TextChannel) && !(channel instanceof discord_js_1.ThreadChannel))) {
155
157
  throw new Error(`Channel ${channelId} not found or is not a text channel`);
156
158
  }
157
159
  return channel;
@@ -180,45 +182,9 @@ class DiscordChatClient extends ChatClient_js_1.ChatClient {
180
182
  */
181
183
  async postMessage(channelId, content, options) {
182
184
  const channel = await this.fetchTextChannel(channelId);
183
- let messageOptions;
184
- if ((0, utils_js_1.isDocument)(content)) {
185
- const embed = (0, discord_js_2.toDiscordEmbed)(content.getBlocks());
186
- // Check if embed has any content - Discord rejects empty embeds
187
- const hasEmbedContent = embed.title !== undefined ||
188
- embed.description !== undefined ||
189
- embed.footer !== undefined ||
190
- embed.image !== undefined;
191
- if (hasEmbedContent) {
192
- messageOptions = { embeds: [embed] };
193
- }
194
- else {
195
- // Fallback to empty content for documents with no visible blocks
196
- messageOptions = { content: "\u200B" };
197
- }
198
- }
199
- else {
200
- messageOptions = { content };
201
- }
202
- // If threadTs is provided (non-empty), use it as a reply reference
203
- if (options?.threadTs !== undefined && options.threadTs !== "") {
204
- messageOptions.messageReference = { messageId: options.threadTs };
205
- }
206
- // Add file attachments
207
- if (options?.files && options.files.length > 0) {
208
- messageOptions.files = options.files.map((file) => new discord_js_1.AttachmentBuilder(typeof file.content === "string"
209
- ? Buffer.from(file.content)
210
- : file.content, { name: file.name }));
211
- }
212
- // Suppress link preview embeds by default
213
- if (options?.linkPreviews !== true) {
214
- messageOptions.flags = discord_js_1.MessageFlags.SuppressEmbeds;
215
- }
216
- const message = await channel.send(messageOptions);
217
- return {
218
- id: message.id,
219
- channelId,
220
- platform: "discord",
221
- };
185
+ const payload = (0, buildMessagePayload_js_1.buildMessagePayload)(content, options);
186
+ const message = await channel.send(payload);
187
+ return { id: message.id, channelId, platform: "discord" };
222
188
  }
223
189
  /**
224
190
  * Update a message in a Discord channel
@@ -294,12 +260,10 @@ class DiscordChatClient extends ChatClient_js_1.ChatClient {
294
260
  * @returns Unsubscribe function
295
261
  */
296
262
  subscribeToReactions(channelId, callback) {
297
- if (!this.reactionListeners.has(channelId)) {
298
- this.reactionListeners.set(channelId, new Set());
299
- }
300
- const callbacks = this.reactionListeners.get(channelId);
263
+ let callbacks = this.reactionListeners.get(channelId);
301
264
  if (!callbacks) {
302
- throw new Error(`Callbacks not found for channel ${channelId}`);
265
+ callbacks = new Set();
266
+ this.reactionListeners.set(channelId, callbacks);
303
267
  }
304
268
  callbacks.add(callback);
305
269
  return () => {
@@ -316,12 +280,10 @@ class DiscordChatClient extends ChatClient_js_1.ChatClient {
316
280
  * @returns Unsubscribe function
317
281
  */
318
282
  subscribeToMessages(channelId, callback) {
319
- if (!this.messageListeners.has(channelId)) {
320
- this.messageListeners.set(channelId, new Set());
321
- }
322
- const callbacks = this.messageListeners.get(channelId);
283
+ let callbacks = this.messageListeners.get(channelId);
323
284
  if (!callbacks) {
324
- throw new Error(`Callbacks not found for channel ${channelId}`);
285
+ callbacks = new Set();
286
+ this.messageListeners.set(channelId, callbacks);
325
287
  }
326
288
  callbacks.add(callback);
327
289
  return () => {
@@ -349,16 +311,7 @@ class DiscordChatClient extends ChatClient_js_1.ChatClient {
349
311
  */
350
312
  async startThread(messageId, channelId, name, autoArchiveDuration) {
351
313
  const channel = await this.fetchTextChannel(channelId);
352
- const message = await channel.messages.fetch(messageId);
353
- const thread = await message.startThread({
354
- name,
355
- autoArchiveDuration: autoArchiveDuration,
356
- });
357
- return {
358
- id: thread.id,
359
- channelId,
360
- platform: "discord",
361
- };
314
+ return (0, threadOperations_js_1.startThread)(channel, messageId, channelId, name, autoArchiveDuration);
362
315
  }
363
316
  /**
364
317
  * Bulk delete messages in a Discord channel
@@ -368,6 +321,9 @@ class DiscordChatClient extends ChatClient_js_1.ChatClient {
368
321
  */
369
322
  async bulkDelete(channelId, count) {
370
323
  const channel = await this.fetchTextChannel(channelId);
324
+ if (!(channel instanceof discord_js_1.TextChannel)) {
325
+ throw new Error(`Channel ${channelId} is not a text channel`);
326
+ }
371
327
  const deleted = await channel.bulkDelete(count, true);
372
328
  return deleted.size;
373
329
  }
@@ -378,28 +334,37 @@ class DiscordChatClient extends ChatClient_js_1.ChatClient {
378
334
  */
379
335
  async getThreads(channelId) {
380
336
  const channel = await this.fetchTextChannel(channelId);
381
- const threads = [];
382
- // Fetch active threads
383
- const activeThreads = await channel.threads.fetchActive();
384
- for (const [threadId] of activeThreads.threads) {
385
- threads.push({ id: threadId, channelId, platform: "discord" });
386
- }
387
- // Fetch archived threads
388
- const archivedThreads = await channel.threads.fetchArchived();
389
- for (const [threadId] of archivedThreads.threads) {
390
- threads.push({ id: threadId, channelId, platform: "discord" });
337
+ if (!(channel instanceof discord_js_1.TextChannel)) {
338
+ throw new Error(`Channel ${channelId} is not a text channel`);
391
339
  }
392
- return threads;
340
+ return (0, threadOperations_js_1.getThreads)(channel, channelId);
393
341
  }
394
342
  /**
395
343
  * Delete a thread in a Discord channel
396
344
  * @param threadId - ID of the thread to delete
397
345
  */
398
346
  async deleteThread(threadId, _channelId) {
399
- await (0, deleteThread_js_1.deleteThread)(this.client, threadId);
347
+ await (0, threadOperations_js_1.deleteThread)(this.client, threadId);
348
+ }
349
+ /**
350
+ * Post a message to a thread channel
351
+ * In Discord, the threadId IS the channel to post in (threads are channels)
352
+ */
353
+ async postToThread(threadId, _channelId, content, options) {
354
+ return this.postMessage(threadId, content, { files: options?.files });
355
+ }
356
+ /**
357
+ * Subscribe to messages in a specific thread
358
+ * In Discord, threadId IS the thread channel — reuse message subscription
359
+ */
360
+ subscribeToThread(threadId, _channelId, callback) {
361
+ return this.subscribeToMessages(threadId, callback);
400
362
  }
401
363
  async getMembers(channelId) {
402
364
  const channel = await this.fetchTextChannel(channelId);
365
+ if (!(channel instanceof discord_js_1.TextChannel)) {
366
+ throw new Error(`Channel ${channelId} is not a text channel`);
367
+ }
403
368
  return (0, fetchChannelMembers_js_1.fetchChannelMembers)(channel);
404
369
  }
405
370
  /**
@@ -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,23 @@
1
+ import { AttachmentBuilder, MessageFlags } from "discord.js";
2
+ import { type DiscordEmbed } from "../outputters/discord.js";
3
+ import type { FileAttachment, MessageContent } from "../types.js";
4
+ export interface DiscordMessagePayload {
5
+ content?: string;
6
+ embeds?: DiscordEmbed[];
7
+ messageReference?: {
8
+ messageId: string;
9
+ };
10
+ files?: AttachmentBuilder[];
11
+ flags?: typeof MessageFlags.SuppressEmbeds;
12
+ }
13
+ /**
14
+ * Build a Discord message payload from content and options.
15
+ * Handles Document-to-embed conversion, file attachments, reply references,
16
+ * and link preview suppression.
17
+ */
18
+ export declare function buildMessagePayload(content: MessageContent, options?: {
19
+ threadTs?: string;
20
+ files?: FileAttachment[];
21
+ linkPreviews?: boolean;
22
+ }): DiscordMessagePayload;
23
+ //# sourceMappingURL=buildMessagePayload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildMessagePayload.d.ts","sourceRoot":"","sources":["../../src/discord/buildMessagePayload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE7D,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlE,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,KAAK,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,YAAY,CAAC,cAAc,CAAC;CAC5C;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,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,qBAAqB,CAwCvB"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildMessagePayload = buildMessagePayload;
4
+ const discord_js_1 = require("discord.js");
5
+ const discord_js_2 = require("../outputters/discord.js");
6
+ const utils_js_1 = require("../utils.js");
7
+ /**
8
+ * Build a Discord message payload from content and options.
9
+ * Handles Document-to-embed conversion, file attachments, reply references,
10
+ * and link preview suppression.
11
+ */
12
+ function buildMessagePayload(content, options) {
13
+ let payload;
14
+ if ((0, utils_js_1.isDocument)(content)) {
15
+ const embed = (0, discord_js_2.toDiscordEmbed)(content.getBlocks());
16
+ const hasEmbedContent = embed.title !== undefined ||
17
+ embed.description !== undefined ||
18
+ embed.footer !== undefined ||
19
+ embed.image !== undefined;
20
+ payload = hasEmbedContent ? { embeds: [embed] } : { content: "\u200B" };
21
+ }
22
+ else {
23
+ payload = { content };
24
+ }
25
+ // If threadTs is provided (non-empty), use it as a reply reference
26
+ if (options?.threadTs !== undefined && options.threadTs !== "") {
27
+ payload.messageReference = { messageId: options.threadTs };
28
+ }
29
+ // Add file attachments
30
+ if (options?.files && options.files.length > 0) {
31
+ payload.files = options.files.map((file) => new discord_js_1.AttachmentBuilder(typeof file.content === "string"
32
+ ? Buffer.from(file.content)
33
+ : file.content, { name: file.name }));
34
+ }
35
+ // Suppress link preview embeds by default
36
+ if (options?.linkPreviews !== true) {
37
+ payload.flags = discord_js_1.MessageFlags.SuppressEmbeds;
38
+ }
39
+ return payload;
40
+ }
41
+ //# sourceMappingURL=buildMessagePayload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildMessagePayload.js","sourceRoot":"","sources":["../../src/discord/buildMessagePayload.ts"],"names":[],"mappings":";;AAmBA,kDA+CC;AAlED,2CAA6D;AAE7D,yDAA6E;AAE7E,0CAAyC;AAUzC;;;;GAIG;AACH,SAAgB,mBAAmB,CACjC,OAAuB,EACvB,OAIC;IAED,IAAI,OAA8B,CAAC;IAEnC,IAAI,IAAA,qBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAA,2BAAc,EAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAClD,MAAM,eAAe,GACnB,KAAK,CAAC,KAAK,KAAK,SAAS;YACzB,KAAK,CAAC,WAAW,KAAK,SAAS;YAC/B,KAAK,CAAC,MAAM,KAAK,SAAS;YAC1B,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;QAE5B,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC1E,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,EAAE,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,mEAAmE;IACnE,IAAI,OAAO,EAAE,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QAC/D,OAAO,CAAC,gBAAgB,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC7D,CAAC;IAED,uBAAuB;IACvB,IAAI,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAC/B,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,8BAAiB,CACnB,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;YAC9B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,OAAO,EAChB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CACpB,CACJ,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,IAAI,OAAO,EAAE,YAAY,KAAK,IAAI,EAAE,CAAC;QACnC,OAAO,CAAC,KAAK,GAAG,yBAAY,CAAC,cAAc,CAAC;IAC9C,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type Client, type TextChannel, ThreadChannel } from "discord.js";
2
+ import type { ThreadData } from "../types.js";
3
+ /**
4
+ * Create a thread from a message in a Discord text channel.
5
+ */
6
+ export declare function startThread(channel: TextChannel | ThreadChannel, messageId: string, channelId: string, name: string, autoArchiveDuration?: number): Promise<ThreadData>;
7
+ /**
8
+ * Get all threads (active and archived) in a Discord text channel.
9
+ */
10
+ export declare function getThreads(channel: TextChannel, channelId: string): Promise<ThreadData[]>;
11
+ /**
12
+ * Delete a thread by its ID.
13
+ * Fetches the thread channel and calls delete().
14
+ */
15
+ export declare function deleteThread(client: Client, threadId: string): Promise<void>;
16
+ //# sourceMappingURL=threadOperations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threadOperations.d.ts","sourceRoot":"","sources":["../../src/discord/threadOperations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,GAAG,aAAa,EACpC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,UAAU,CAAC,CAiBrB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,EAAE,CAAC,CAcvB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAMf"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.startThread = startThread;
4
+ exports.getThreads = getThreads;
5
+ exports.deleteThread = deleteThread;
6
+ const discord_js_1 = require("discord.js");
7
+ /**
8
+ * Create a thread from a message in a Discord text channel.
9
+ */
10
+ async function startThread(channel, messageId, channelId, name, autoArchiveDuration) {
11
+ const message = await channel.messages.fetch(messageId);
12
+ const thread = await message.startThread({
13
+ name,
14
+ autoArchiveDuration: autoArchiveDuration,
15
+ });
16
+ return {
17
+ id: thread.id,
18
+ channelId,
19
+ platform: "discord",
20
+ };
21
+ }
22
+ /**
23
+ * Get all threads (active and archived) in a Discord text channel.
24
+ */
25
+ async function getThreads(channel, channelId) {
26
+ const threads = [];
27
+ const activeThreads = await channel.threads.fetchActive();
28
+ for (const [threadId] of activeThreads.threads) {
29
+ threads.push({ id: threadId, channelId, platform: "discord" });
30
+ }
31
+ const archivedThreads = await channel.threads.fetchArchived();
32
+ for (const [threadId] of archivedThreads.threads) {
33
+ threads.push({ id: threadId, channelId, platform: "discord" });
34
+ }
35
+ return threads;
36
+ }
37
+ /**
38
+ * Delete a thread by its ID.
39
+ * Fetches the thread channel and calls delete().
40
+ */
41
+ async function deleteThread(client, threadId) {
42
+ const thread = await client.channels.fetch(threadId);
43
+ if (!thread || !(thread instanceof discord_js_1.ThreadChannel)) {
44
+ throw new Error(`Thread ${threadId} not found`);
45
+ }
46
+ await thread.delete();
47
+ }
48
+ //# sourceMappingURL=threadOperations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threadOperations.js","sourceRoot":"","sources":["../../src/discord/threadOperations.ts"],"names":[],"mappings":";;AAOA,kCAuBC;AAKD,gCAiBC;AAMD,oCASC;AAnED,2CAA0E;AAI1E;;GAEG;AACI,KAAK,UAAU,WAAW,CAC/B,OAAoC,EACpC,SAAiB,EACjB,SAAiB,EACjB,IAAY,EACZ,mBAA4B;IAE5B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI;QACJ,mBAAmB,EAAE,mBAKR;KACd,CAAC,CAAC;IAEH,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,SAAS;QACT,QAAQ,EAAE,SAAS;KACpB,CAAC;AACJ,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,UAAU,CAC9B,OAAoB,EACpB,SAAiB;IAEjB,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC1D,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IAC9D,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,QAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,YAAY,0BAAa,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,UAAU,QAAQ,YAAY,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;AACxB,CAAC"}
@@ -8,6 +8,7 @@ export declare class SlackChatClient extends ChatClient implements ChannelOperat
8
8
  private app;
9
9
  private reactionCallbacks;
10
10
  private messageCallbacks;
11
+ private threadCallbacks;
11
12
  private disconnectCallbacks;
12
13
  private errorCallbacks;
13
14
  constructor(config: SlackConfig);
@@ -79,6 +80,18 @@ export declare class SlackChatClient extends ChatClient implements ChannelOperat
79
80
  */
80
81
  deleteThread(threadId: string, channelId: string): Promise<void>;
81
82
  getMembers(channelId: string): Promise<Member[]>;
83
+ /**
84
+ * Post a message to a thread
85
+ * Slack posts to the parent channel with thread_ts
86
+ */
87
+ postToThread(threadId: string, channelId: string, content: MessageContent, options?: {
88
+ files?: FileAttachment[];
89
+ }): Promise<MessageData>;
90
+ /**
91
+ * Subscribe to messages in a specific thread
92
+ * Callbacks are keyed by threadId (parent message ts)
93
+ */
94
+ subscribeToThread(threadId: string, _channelId: string, callback: MessageCallback): () => void;
82
95
  /**
83
96
  * Register a callback for disconnect events
84
97
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SlackChatClient.d.ts","sourceRoot":"","sources":["../../src/slack/SlackChatClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SlackChatClient.d.ts","sourceRoot":"","sources":["../../src/slack/SlackChatClient.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,9 @@ const Channel_js_1 = require("../Channel.js");
7
7
  const ChatClient_js_1 = require("../ChatClient.js");
8
8
  const slack_js_1 = require("../outputters/slack.js");
9
9
  const utils_js_1 = require("../utils.js");
10
+ const buildMessageEvent_js_1 = require("./buildMessageEvent.js");
10
11
  const fetchChannelMembers_js_1 = require("./fetchChannelMembers.js");
12
+ const getThreads_js_1 = require("./getThreads.js");
11
13
  const removeAllReactions_js_1 = require("./removeAllReactions.js");
12
14
  /**
13
15
  * Slack chat client implementation using @slack/bolt
@@ -16,6 +18,7 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
16
18
  app;
17
19
  reactionCallbacks = new Map();
18
20
  messageCallbacks = new Map();
21
+ threadCallbacks = new Map();
19
22
  disconnectCallbacks = new Set();
20
23
  errorCallbacks = new Set();
21
24
  constructor(config) {
@@ -64,55 +67,46 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
64
67
  }
65
68
  });
66
69
  // Set up global message event listener
70
+ // @slack/bolt's message event is a complex union — narrow to our typed subset
67
71
  this.app.event("message", async ({ event, context }) => {
68
- const channelId = event.channel;
69
- const callbacks = this.messageCallbacks.get(channelId);
70
- if (!callbacks || callbacks.size === 0) {
71
- return;
72
- }
72
+ const payload = event;
73
73
  // Skip bot's own messages
74
74
  if (context.botId !== undefined &&
75
75
  context.botId !== "" &&
76
- "bot_id" in event &&
77
- event.bot_id === context.botId) {
76
+ payload.bot_id === context.botId) {
78
77
  return;
79
78
  }
80
- const user = {
81
- id: "user" in event ? (event.user ?? "") : "",
82
- username: undefined,
83
- };
84
- const attachments = [];
85
- if ("files" in event && Array.isArray(event.files)) {
86
- for (const file of event.files) {
87
- const f = file;
88
- const url = typeof f.url_private === "string" ? f.url_private : "";
89
- const name = typeof f.name === "string" ? f.name : "";
90
- if (url === "" || name === "") {
91
- continue;
79
+ const messageEvent = (0, buildMessageEvent_js_1.buildMessageEvent)(payload);
80
+ // Determine if this is a thread reply (thread_ts present and differs from ts)
81
+ const { thread_ts: threadTs } = payload;
82
+ const isThreadReply = threadTs !== undefined && threadTs !== payload.ts;
83
+ if (isThreadReply) {
84
+ const callbacks = this.threadCallbacks.get(threadTs);
85
+ if (!callbacks || callbacks.size === 0) {
86
+ return;
87
+ }
88
+ messageEvent.threadId = threadTs;
89
+ for (const callback of callbacks) {
90
+ try {
91
+ await Promise.resolve(callback(messageEvent));
92
+ }
93
+ catch (err) {
94
+ console.error("Message callback error:", err);
92
95
  }
93
- const mimetype = typeof f.mimetype === "string" ? f.mimetype : undefined;
94
- attachments.push({
95
- url,
96
- name,
97
- contentType: mimetype === "" ? undefined : mimetype,
98
- size: typeof f.size === "number" ? f.size : undefined,
99
- });
100
96
  }
101
97
  }
102
- const messageEvent = {
103
- id: "ts" in event ? event.ts : "",
104
- content: "text" in event ? (event.text ?? "") : "",
105
- author: user,
106
- channelId,
107
- timestamp: "ts" in event ? new Date(parseFloat(event.ts) * 1000) : new Date(),
108
- attachments,
109
- };
110
- for (const callback of callbacks) {
111
- try {
112
- await Promise.resolve(callback(messageEvent));
98
+ else {
99
+ const callbacks = this.messageCallbacks.get(payload.channel);
100
+ if (!callbacks || callbacks.size === 0) {
101
+ return;
113
102
  }
114
- catch (err) {
115
- console.error("Message callback error:", err);
103
+ for (const callback of callbacks) {
104
+ try {
105
+ await Promise.resolve(callback(messageEvent));
106
+ }
107
+ catch (err) {
108
+ console.error("Message callback error:", err);
109
+ }
116
110
  }
117
111
  }
118
112
  });
@@ -131,6 +125,7 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
131
125
  await this.app.stop();
132
126
  this.reactionCallbacks.clear();
133
127
  this.messageCallbacks.clear();
128
+ this.threadCallbacks.clear();
134
129
  this.disconnectCallbacks.clear();
135
130
  this.errorCallbacks.clear();
136
131
  }
@@ -369,26 +364,7 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
369
364
  * Get all threads in a Slack channel
370
365
  */
371
366
  async getThreads(channelId) {
372
- const threads = [];
373
- const history = await this.app.client.conversations.history({
374
- channel: channelId,
375
- limit: 200,
376
- });
377
- if (history.messages) {
378
- for (const msg of history.messages) {
379
- if (msg.reply_count !== undefined &&
380
- msg.reply_count > 0 &&
381
- msg.ts !== undefined &&
382
- msg.ts !== "") {
383
- threads.push({
384
- id: msg.ts,
385
- channelId,
386
- platform: "slack",
387
- });
388
- }
389
- }
390
- }
391
- return threads;
367
+ return (0, getThreads_js_1.getThreads)(this.app, channelId);
392
368
  }
393
369
  /**
394
370
  * Delete a thread in a Slack channel.
@@ -400,6 +376,37 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
400
376
  async getMembers(channelId) {
401
377
  return (0, fetchChannelMembers_js_1.fetchChannelMembers)(this.app, channelId);
402
378
  }
379
+ /**
380
+ * Post a message to a thread
381
+ * Slack posts to the parent channel with thread_ts
382
+ */
383
+ async postToThread(threadId, channelId, content, options) {
384
+ return this.postMessage(channelId, content, {
385
+ threadTs: threadId,
386
+ files: options?.files,
387
+ });
388
+ }
389
+ /**
390
+ * Subscribe to messages in a specific thread
391
+ * Callbacks are keyed by threadId (parent message ts)
392
+ */
393
+ subscribeToThread(threadId, _channelId, callback) {
394
+ let callbacks = this.threadCallbacks.get(threadId);
395
+ if (!callbacks) {
396
+ callbacks = new Set();
397
+ this.threadCallbacks.set(threadId, callbacks);
398
+ }
399
+ callbacks.add(callback);
400
+ return () => {
401
+ const cbs = this.threadCallbacks.get(threadId);
402
+ if (cbs) {
403
+ cbs.delete(callback);
404
+ if (cbs.size === 0) {
405
+ this.threadCallbacks.delete(threadId);
406
+ }
407
+ }
408
+ };
409
+ }
403
410
  /**
404
411
  * Register a callback for disconnect events
405
412
  */