@hardlydifficult/chat 1.1.2 → 1.1.4
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/README.md +112 -118
- package/dist/Channel.d.ts +33 -3
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +47 -17
- package/dist/Channel.js.map +1 -1
- package/dist/Message.d.ts +21 -14
- package/dist/Message.d.ts.map +1 -1
- package/dist/Message.js +29 -14
- package/dist/Message.js.map +1 -1
- package/dist/discord/DiscordChatClient.d.ts +60 -1
- package/dist/discord/DiscordChatClient.d.ts.map +1 -1
- package/dist/discord/DiscordChatClient.js +198 -7
- package/dist/discord/DiscordChatClient.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/slack/SlackChatClient.d.ts +34 -1
- package/dist/slack/SlackChatClient.d.ts.map +1 -1
- package/dist/slack/SlackChatClient.js +195 -0
- package/dist/slack/SlackChatClient.js.map +1 -1
- package/dist/types.d.ts +63 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -12,6 +12,9 @@ const utils_js_1 = require("../utils.js");
|
|
|
12
12
|
class SlackChatClient extends ChatClient_js_1.ChatClient {
|
|
13
13
|
app;
|
|
14
14
|
reactionCallbacks = new Map();
|
|
15
|
+
messageCallbacks = new Map();
|
|
16
|
+
disconnectCallbacks = new Set();
|
|
17
|
+
errorCallbacks = new Set();
|
|
15
18
|
constructor(config) {
|
|
16
19
|
super(config);
|
|
17
20
|
const token = config.token ?? process.env.SLACK_BOT_TOKEN;
|
|
@@ -21,6 +24,18 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
|
|
|
21
24
|
appToken,
|
|
22
25
|
socketMode: config.socketMode ?? true,
|
|
23
26
|
});
|
|
27
|
+
// Forward @slack/bolt errors to registered error callbacks
|
|
28
|
+
this.app.error(async (error) => {
|
|
29
|
+
const wrappedError = error instanceof Error ? error : new Error(String(error));
|
|
30
|
+
for (const callback of this.errorCallbacks) {
|
|
31
|
+
try {
|
|
32
|
+
await callback(wrappedError);
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
console.error('Error callback error:', err);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
});
|
|
24
39
|
// Set up global reaction event listener
|
|
25
40
|
this.app.event('reaction_added', async ({ event }) => {
|
|
26
41
|
const channelId = event.item.channel;
|
|
@@ -45,6 +60,40 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
|
|
|
45
60
|
}
|
|
46
61
|
}
|
|
47
62
|
});
|
|
63
|
+
// Set up global message event listener
|
|
64
|
+
this.app.event('message', async ({ event, context }) => {
|
|
65
|
+
const channelId = event.channel;
|
|
66
|
+
const callbacks = this.messageCallbacks.get(channelId);
|
|
67
|
+
if (!callbacks || callbacks.size === 0) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// Skip bot's own messages
|
|
71
|
+
if (context.botId !== undefined &&
|
|
72
|
+
context.botId !== '' &&
|
|
73
|
+
'bot_id' in event &&
|
|
74
|
+
event.bot_id === context.botId) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const user = {
|
|
78
|
+
id: 'user' in event ? (event.user ?? '') : '',
|
|
79
|
+
username: undefined,
|
|
80
|
+
};
|
|
81
|
+
const messageEvent = {
|
|
82
|
+
id: 'ts' in event ? event.ts : '',
|
|
83
|
+
content: 'text' in event ? (event.text ?? '') : '',
|
|
84
|
+
author: user,
|
|
85
|
+
channelId,
|
|
86
|
+
timestamp: 'ts' in event ? new Date(parseFloat(event.ts) * 1000) : new Date(),
|
|
87
|
+
};
|
|
88
|
+
for (const callback of callbacks) {
|
|
89
|
+
try {
|
|
90
|
+
await Promise.resolve(callback(messageEvent));
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
console.error('Message callback error:', err);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
});
|
|
48
97
|
}
|
|
49
98
|
/**
|
|
50
99
|
* Connect to Slack and return a channel object
|
|
@@ -59,6 +108,9 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
|
|
|
59
108
|
async disconnect() {
|
|
60
109
|
await this.app.stop();
|
|
61
110
|
this.reactionCallbacks.clear();
|
|
111
|
+
this.messageCallbacks.clear();
|
|
112
|
+
this.disconnectCallbacks.clear();
|
|
113
|
+
this.errorCallbacks.clear();
|
|
62
114
|
}
|
|
63
115
|
/**
|
|
64
116
|
* Post a message to a Slack channel
|
|
@@ -73,6 +125,39 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
|
|
|
73
125
|
else {
|
|
74
126
|
text = content;
|
|
75
127
|
}
|
|
128
|
+
// If files are provided, upload them and attach to the message
|
|
129
|
+
if (options?.files && options.files.length > 0) {
|
|
130
|
+
for (let i = 0; i < options.files.length; i++) {
|
|
131
|
+
const file = options.files[i];
|
|
132
|
+
await this.app.client.filesUploadV2({
|
|
133
|
+
channel_id: channelId,
|
|
134
|
+
filename: file.name,
|
|
135
|
+
// Only attach the text as initial_comment on the first file to avoid duplicates
|
|
136
|
+
...(i === 0 ? { initial_comment: text } : {}),
|
|
137
|
+
thread_ts: options.threadTs,
|
|
138
|
+
// String content uses the content field; binary uses the file field
|
|
139
|
+
...(typeof file.content === 'string'
|
|
140
|
+
? { content: file.content }
|
|
141
|
+
: { file: file.content }),
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
// Post the text message separately if there are also blocks (rich document)
|
|
145
|
+
if (blocks) {
|
|
146
|
+
const result = await this.app.client.chat.postMessage({
|
|
147
|
+
channel: channelId,
|
|
148
|
+
text,
|
|
149
|
+
blocks,
|
|
150
|
+
thread_ts: options.threadTs,
|
|
151
|
+
});
|
|
152
|
+
if (result.ts === undefined) {
|
|
153
|
+
throw new Error('Slack API did not return a message timestamp');
|
|
154
|
+
}
|
|
155
|
+
return { id: result.ts, channelId, platform: 'slack' };
|
|
156
|
+
}
|
|
157
|
+
// File uploads create messages implicitly; the Slack API doesn't reliably
|
|
158
|
+
// return a message timestamp from filesUploadV2, so return empty ID.
|
|
159
|
+
return { id: '', channelId, platform: 'slack' };
|
|
160
|
+
}
|
|
76
161
|
const result = await this.app.client.chat.postMessage({
|
|
77
162
|
channel: channelId,
|
|
78
163
|
text,
|
|
@@ -150,6 +235,116 @@ class SlackChatClient extends ChatClient_js_1.ChatClient {
|
|
|
150
235
|
}
|
|
151
236
|
};
|
|
152
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* Subscribe to incoming message events on a channel
|
|
240
|
+
*/
|
|
241
|
+
subscribeToMessages(channelId, callback) {
|
|
242
|
+
let callbacks = this.messageCallbacks.get(channelId);
|
|
243
|
+
if (!callbacks) {
|
|
244
|
+
callbacks = new Set();
|
|
245
|
+
this.messageCallbacks.set(channelId, callbacks);
|
|
246
|
+
}
|
|
247
|
+
callbacks.add(callback);
|
|
248
|
+
return () => {
|
|
249
|
+
const channelCallbacks = this.messageCallbacks.get(channelId);
|
|
250
|
+
if (channelCallbacks) {
|
|
251
|
+
channelCallbacks.delete(callback);
|
|
252
|
+
if (channelCallbacks.size === 0) {
|
|
253
|
+
this.messageCallbacks.delete(channelId);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Send a typing indicator (not directly supported in Slack bot API - no-op)
|
|
260
|
+
*/
|
|
261
|
+
async sendTyping(_channelId) {
|
|
262
|
+
// Slack does not support bot typing indicators via the API
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Create a thread from a message in Slack
|
|
266
|
+
* Slack threads are implicit - posting a reply creates the thread
|
|
267
|
+
*/
|
|
268
|
+
startThread(messageId, channelId, _name, _options) {
|
|
269
|
+
// In Slack, threads are created by replying to a message.
|
|
270
|
+
// Return the message timestamp as the thread ID
|
|
271
|
+
return Promise.resolve({
|
|
272
|
+
id: messageId,
|
|
273
|
+
channelId,
|
|
274
|
+
platform: 'slack',
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Bulk delete messages in a Slack channel
|
|
279
|
+
*/
|
|
280
|
+
async bulkDelete(channelId, count) {
|
|
281
|
+
// Slack doesn't have a bulkDelete API; delete messages one by one
|
|
282
|
+
const history = await this.app.client.conversations.history({
|
|
283
|
+
channel: channelId,
|
|
284
|
+
limit: count,
|
|
285
|
+
});
|
|
286
|
+
let deleted = 0;
|
|
287
|
+
if (history.messages) {
|
|
288
|
+
for (const msg of history.messages) {
|
|
289
|
+
if (msg.ts !== undefined && msg.ts !== '') {
|
|
290
|
+
try {
|
|
291
|
+
await this.app.client.chat.delete({
|
|
292
|
+
channel: channelId,
|
|
293
|
+
ts: msg.ts,
|
|
294
|
+
});
|
|
295
|
+
deleted++;
|
|
296
|
+
}
|
|
297
|
+
catch {
|
|
298
|
+
// Some messages may not be deletable (e.g., others' messages without admin)
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return deleted;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Get all threads in a Slack channel
|
|
307
|
+
*/
|
|
308
|
+
async getThreads(channelId) {
|
|
309
|
+
const threads = [];
|
|
310
|
+
const history = await this.app.client.conversations.history({
|
|
311
|
+
channel: channelId,
|
|
312
|
+
limit: 200,
|
|
313
|
+
});
|
|
314
|
+
if (history.messages) {
|
|
315
|
+
for (const msg of history.messages) {
|
|
316
|
+
if (msg.reply_count !== undefined &&
|
|
317
|
+
msg.reply_count > 0 &&
|
|
318
|
+
msg.ts !== undefined &&
|
|
319
|
+
msg.ts !== '') {
|
|
320
|
+
threads.push({
|
|
321
|
+
id: msg.ts,
|
|
322
|
+
channelId,
|
|
323
|
+
platform: 'slack',
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
return threads;
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Register a callback for disconnect events
|
|
332
|
+
*/
|
|
333
|
+
onDisconnect(callback) {
|
|
334
|
+
this.disconnectCallbacks.add(callback);
|
|
335
|
+
return () => {
|
|
336
|
+
this.disconnectCallbacks.delete(callback);
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Register a callback for error events
|
|
341
|
+
*/
|
|
342
|
+
onError(callback) {
|
|
343
|
+
this.errorCallbacks.add(callback);
|
|
344
|
+
return () => {
|
|
345
|
+
this.errorCallbacks.delete(callback);
|
|
346
|
+
};
|
|
347
|
+
}
|
|
153
348
|
}
|
|
154
349
|
exports.SlackChatClient = SlackChatClient;
|
|
155
350
|
//# sourceMappingURL=SlackChatClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlackChatClient.js","sourceRoot":"","sources":["../../src/slack/SlackChatClient.ts"],"names":[],"mappings":";;;AAAA,sCAAkC;AAClC,oDAA8C;AAC9C,8CAAgE;
|
|
1
|
+
{"version":3,"file":"SlackChatClient.js","sourceRoot":"","sources":["../../src/slack/SlackChatClient.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export interface DiscordConfig {
|
|
|
6
6
|
type: 'discord';
|
|
7
7
|
token?: string;
|
|
8
8
|
guildId?: string;
|
|
9
|
+
/** Additional gateway intents to register */
|
|
10
|
+
intents?: DiscordGatewayIntents;
|
|
9
11
|
}
|
|
10
12
|
/**
|
|
11
13
|
* Configuration for Slack client
|
|
@@ -47,6 +49,50 @@ export interface ReactionEvent {
|
|
|
47
49
|
* Callback function type for reaction events
|
|
48
50
|
*/
|
|
49
51
|
export type ReactionCallback = (event: ReactionEvent) => void | Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Data provided to incoming message callbacks
|
|
54
|
+
*/
|
|
55
|
+
export interface MessageEvent {
|
|
56
|
+
/** ID of the message */
|
|
57
|
+
id: string;
|
|
58
|
+
/** Text content of the message */
|
|
59
|
+
content: string;
|
|
60
|
+
/** User who sent the message */
|
|
61
|
+
author: User;
|
|
62
|
+
/** ID of the channel the message was posted in */
|
|
63
|
+
channelId: string;
|
|
64
|
+
/** Timestamp of the message */
|
|
65
|
+
timestamp: Date;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Callback function type for incoming message events
|
|
69
|
+
*/
|
|
70
|
+
export type MessageCallback = (event: MessageEvent) => void | Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* File attachment for message posting
|
|
73
|
+
*/
|
|
74
|
+
export interface FileAttachment {
|
|
75
|
+
/** File content as a Buffer or string */
|
|
76
|
+
content: Buffer | string;
|
|
77
|
+
/** Filename including extension */
|
|
78
|
+
name: string;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Data returned when a thread is created
|
|
82
|
+
*/
|
|
83
|
+
export interface ThreadData {
|
|
84
|
+
/** ID of the created thread */
|
|
85
|
+
id: string;
|
|
86
|
+
/** ID of the parent channel */
|
|
87
|
+
channelId: string;
|
|
88
|
+
/** Platform identifier */
|
|
89
|
+
platform: Platform;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Connection event types for resilience callbacks
|
|
93
|
+
*/
|
|
94
|
+
export type DisconnectCallback = (reason: string) => void | Promise<void>;
|
|
95
|
+
export type ErrorCallback = (error: Error) => void | Promise<void>;
|
|
50
96
|
/**
|
|
51
97
|
* Internal message data passed between classes
|
|
52
98
|
*/
|
|
@@ -60,9 +106,25 @@ export interface MessageData {
|
|
|
60
106
|
*/
|
|
61
107
|
export type MessageContent = string | Document;
|
|
62
108
|
/**
|
|
63
|
-
* Options for posting messages with thread support
|
|
109
|
+
* Options for posting messages with thread support and file attachments
|
|
64
110
|
*/
|
|
65
111
|
export interface PostMessageOptions {
|
|
66
112
|
threadTs?: string;
|
|
113
|
+
files?: FileAttachment[];
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Options for creating a thread from a message
|
|
117
|
+
*/
|
|
118
|
+
export interface StartThreadOptions {
|
|
119
|
+
/** Auto-archive duration in minutes (60, 1440, 4320, 10080) */
|
|
120
|
+
autoArchiveDuration?: number;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Configuration for Discord client
|
|
124
|
+
* Additional gateway intents can be specified
|
|
125
|
+
*/
|
|
126
|
+
export interface DiscordGatewayIntents {
|
|
127
|
+
/** Include MessageContent intent for reading message content from other bots/users */
|
|
128
|
+
messageContent?: boolean;
|
|
67
129
|
}
|
|
68
130
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hardlydifficult/chat",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
"discord.js": "14.25.1"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"@hardlydifficult/document-generator": "
|
|
22
|
+
"@hardlydifficult/document-generator": "file:../documentGenerator",
|
|
23
23
|
"@types/node": "20.19.31",
|
|
24
24
|
"typescript": "5.8.3",
|
|
25
25
|
"vitest": "1.6.1"
|
|
26
26
|
},
|
|
27
27
|
"peerDependencies": {
|
|
28
|
-
"@hardlydifficult/document-generator": "1.1.
|
|
28
|
+
"@hardlydifficult/document-generator": ">=1.1.0"
|
|
29
29
|
}
|
|
30
30
|
}
|