@bubblelab/bubble-core 0.1.254 → 0.1.261
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/bubble-bundle.d.ts +148 -31
- package/dist/bubble-factory.d.ts.map +1 -1
- package/dist/bubble-factory.js +9 -0
- package/dist/bubble-factory.js.map +1 -1
- package/dist/bubbles/service-bubble/ai-agent.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/ai-agent.js +9 -2
- package/dist/bubbles/service-bubble/ai-agent.js.map +1 -1
- package/dist/bubbles/service-bubble/asana/asana.d.ts +1232 -0
- package/dist/bubbles/service-bubble/asana/asana.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/asana/asana.js +809 -0
- package/dist/bubbles/service-bubble/asana/asana.js.map +1 -0
- package/dist/bubbles/service-bubble/asana/asana.schema.d.ts +1169 -0
- package/dist/bubbles/service-bubble/asana/asana.schema.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/asana/asana.schema.js +740 -0
- package/dist/bubbles/service-bubble/asana/asana.schema.js.map +1 -0
- package/dist/bubbles/service-bubble/asana/index.d.ts +3 -0
- package/dist/bubbles/service-bubble/asana/index.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/asana/index.js +3 -0
- package/dist/bubbles/service-bubble/asana/index.js.map +1 -0
- package/dist/bubbles/service-bubble/confluence/confluence.d.ts +2 -2
- package/dist/bubbles/service-bubble/confluence/confluence.schema.d.ts +2 -2
- package/dist/bubbles/service-bubble/discord/discord.d.ts +778 -0
- package/dist/bubbles/service-bubble/discord/discord.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/discord/discord.js +370 -0
- package/dist/bubbles/service-bubble/discord/discord.js.map +1 -0
- package/dist/bubbles/service-bubble/discord/discord.schema.d.ts +739 -0
- package/dist/bubbles/service-bubble/discord/discord.schema.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/discord/discord.schema.js +352 -0
- package/dist/bubbles/service-bubble/discord/discord.schema.js.map +1 -0
- package/dist/bubbles/service-bubble/discord/index.d.ts +3 -0
- package/dist/bubbles/service-bubble/discord/index.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/discord/index.js +3 -0
- package/dist/bubbles/service-bubble/discord/index.js.map +1 -0
- package/dist/bubbles/service-bubble/salesforce/index.d.ts +3 -0
- package/dist/bubbles/service-bubble/salesforce/index.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/salesforce/index.js +3 -0
- package/dist/bubbles/service-bubble/salesforce/index.js.map +1 -0
- package/dist/bubbles/service-bubble/salesforce/salesforce.d.ts +209 -0
- package/dist/bubbles/service-bubble/salesforce/salesforce.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/salesforce/salesforce.js +221 -0
- package/dist/bubbles/service-bubble/salesforce/salesforce.js.map +1 -0
- package/dist/bubbles/service-bubble/salesforce/salesforce.schema.d.ts +179 -0
- package/dist/bubbles/service-bubble/salesforce/salesforce.schema.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/salesforce/salesforce.schema.js +127 -0
- package/dist/bubbles/service-bubble/salesforce/salesforce.schema.js.map +1 -0
- package/dist/bubbles/service-bubble/snowflake/snowflake.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/snowflake/snowflake.js +1 -1
- package/dist/bubbles/service-bubble/snowflake/snowflake.js.map +1 -1
- package/dist/bubbles.json +3945 -4
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/discord/discord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,cAAc,EAEf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAIL,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAa7B;;;;;GAKG;AACH,qBAAa,aAAa,CACxB,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,CACjD,SAAQ,aAAa,CACrB,CAAC,EACD,OAAO,CAAC,aAAa,EAAE;IAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;CAAE,CAAC,CACtD;IACC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IAC1C,MAAM,CAAC,QAAQ,CAAC,OAAO,aAAa;IACpC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;IAC5C,MAAM,CAAC,QAAQ,CAAC,UAAU,aAAa;IACvC,MAAM,CAAC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAAuB;IAC7C,MAAM,CAAC,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAAuB;IACnD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,iFACgD;IAChF,MAAM,CAAC,QAAQ,CAAC,eAAe,iiBAgB7B;IACF,MAAM,CAAC,QAAQ,CAAC,KAAK,MAAM;gBAGzB,MAAM,GAAE,CAEF,EACN,OAAO,CAAC,EAAE,aAAa;IAKZ,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAmB/C,OAAO,CAAC,gBAAgB;IAuCxB,SAAS,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAKhD,2DAA2D;IAC3D,OAAO,CAAC,UAAU;YAWJ,cAAc;cAuDZ,aAAa,IAAI,OAAO,CACtC,OAAO,CAAC,aAAa,EAAE;QAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;KAAE,CAAC,CACtD;YA4Ea,WAAW;YAyBX,YAAY;YAqBZ,WAAW;YAqBX,aAAa;YAeb,UAAU;YAiBV,WAAW;YAkBX,YAAY;YAcZ,aAAa;YA0Bb,aAAa;YAcb,YAAY;YA2BZ,WAAW;YAkBX,WAAW;YAuBX,QAAQ;CAavB"}
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
import { ServiceBubble } from '../../../types/service-bubble-class.js';
|
|
2
|
+
import { CredentialType, decodeCredentialPayload, } from '@bubblelab/shared-schemas';
|
|
3
|
+
import { DiscordParamsSchema, DiscordResultSchema, } from './discord.schema.js';
|
|
4
|
+
const DISCORD_API_BASE = 'https://discord.com/api/v10';
|
|
5
|
+
/** Map user-friendly channel type to Discord's integer type */
|
|
6
|
+
const CHANNEL_TYPE_MAP = {
|
|
7
|
+
text: 0,
|
|
8
|
+
voice: 2,
|
|
9
|
+
category: 4,
|
|
10
|
+
announcement: 5,
|
|
11
|
+
forum: 15,
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Discord Service Bubble
|
|
15
|
+
*
|
|
16
|
+
* Comprehensive Discord integration for messaging, channel management,
|
|
17
|
+
* threads, reactions, and guild operations via the Discord REST API (v10).
|
|
18
|
+
*/
|
|
19
|
+
export class DiscordBubble extends ServiceBubble {
|
|
20
|
+
static type = 'service';
|
|
21
|
+
static service = 'discord';
|
|
22
|
+
static authType = 'oauth';
|
|
23
|
+
static bubbleName = 'discord';
|
|
24
|
+
static schema = DiscordParamsSchema;
|
|
25
|
+
static resultSchema = DiscordResultSchema;
|
|
26
|
+
static shortDescription = 'Discord integration for messaging, channels, threads, and server management';
|
|
27
|
+
static longDescription = `
|
|
28
|
+
Comprehensive Discord integration via the REST API (v10).
|
|
29
|
+
|
|
30
|
+
Features:
|
|
31
|
+
- Send, edit, delete, and pin messages in channels
|
|
32
|
+
- List and read message history
|
|
33
|
+
- Add emoji reactions to messages
|
|
34
|
+
- List, create, and delete channels
|
|
35
|
+
- Create and list threads
|
|
36
|
+
- List guild/server members
|
|
37
|
+
- Get guild/server information
|
|
38
|
+
|
|
39
|
+
Security Features:
|
|
40
|
+
- OAuth 2.0 authentication with Discord
|
|
41
|
+
- Guild-scoped access with bot permissions
|
|
42
|
+
- Secure credential handling with base64-encoded payloads
|
|
43
|
+
`;
|
|
44
|
+
static alias = '';
|
|
45
|
+
constructor(params = {
|
|
46
|
+
operation: 'list_channels',
|
|
47
|
+
}, context) {
|
|
48
|
+
super(params, context);
|
|
49
|
+
}
|
|
50
|
+
async testCredential() {
|
|
51
|
+
const creds = this.parseCredentials();
|
|
52
|
+
if (!creds) {
|
|
53
|
+
throw new Error('Discord credentials are required');
|
|
54
|
+
}
|
|
55
|
+
const response = await fetch(`${DISCORD_API_BASE}/users/@me`, {
|
|
56
|
+
headers: {
|
|
57
|
+
Authorization: `Bot ${creds.botToken}`,
|
|
58
|
+
Accept: 'application/json',
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
if (!response.ok) {
|
|
62
|
+
const text = await response.text();
|
|
63
|
+
throw new Error(`Discord API error (${response.status}): ${text}`);
|
|
64
|
+
}
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
parseCredentials() {
|
|
68
|
+
const { credentials } = this.params;
|
|
69
|
+
if (!credentials || typeof credentials !== 'object') {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
const raw = credentials[CredentialType.DISCORD_CRED];
|
|
73
|
+
if (!raw) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const parsed = decodeCredentialPayload(raw);
|
|
78
|
+
// Prefer botToken (injected by credential-helper from env)
|
|
79
|
+
const token = parsed.botToken || parsed.accessToken;
|
|
80
|
+
if (token) {
|
|
81
|
+
return {
|
|
82
|
+
botToken: token,
|
|
83
|
+
guildId: parsed.guildId || '',
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// If decoding fails, treat the raw value as a token
|
|
89
|
+
}
|
|
90
|
+
return { botToken: raw, guildId: '' };
|
|
91
|
+
}
|
|
92
|
+
chooseCredential() {
|
|
93
|
+
const creds = this.parseCredentials();
|
|
94
|
+
return creds?.botToken;
|
|
95
|
+
}
|
|
96
|
+
/** Resolve guild ID from params or credential metadata. */
|
|
97
|
+
getGuildId(paramsGuildId) {
|
|
98
|
+
if (paramsGuildId)
|
|
99
|
+
return paramsGuildId;
|
|
100
|
+
const creds = this.parseCredentials();
|
|
101
|
+
if (creds?.guildId)
|
|
102
|
+
return creds.guildId;
|
|
103
|
+
throw new Error('Guild ID is required. Provide it in the guild_id parameter or ensure your Discord credential has guild metadata.');
|
|
104
|
+
}
|
|
105
|
+
// ─── API Request Helper ─────────────────────────────────────────────
|
|
106
|
+
async discordRequest(endpoint, method = 'GET', body) {
|
|
107
|
+
const creds = this.parseCredentials();
|
|
108
|
+
if (!creds) {
|
|
109
|
+
throw new Error('Discord credentials are required');
|
|
110
|
+
}
|
|
111
|
+
const url = `${DISCORD_API_BASE}${endpoint}`;
|
|
112
|
+
const init = {
|
|
113
|
+
method,
|
|
114
|
+
headers: {
|
|
115
|
+
Authorization: `Bot ${creds.botToken}`,
|
|
116
|
+
'Content-Type': 'application/json',
|
|
117
|
+
Accept: 'application/json',
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
if (body && method !== 'GET') {
|
|
121
|
+
init.body = JSON.stringify(body);
|
|
122
|
+
}
|
|
123
|
+
const response = await fetch(url, init);
|
|
124
|
+
// 204 No Content (e.g., reactions, pins, deletes)
|
|
125
|
+
if (response.status === 204) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
const text = await response.text();
|
|
129
|
+
if (!response.ok) {
|
|
130
|
+
let errorMessage = `Discord API error (${response.status})`;
|
|
131
|
+
try {
|
|
132
|
+
const errorData = JSON.parse(text);
|
|
133
|
+
if (errorData.message) {
|
|
134
|
+
errorMessage += `: ${errorData.message}`;
|
|
135
|
+
}
|
|
136
|
+
if (errorData.code) {
|
|
137
|
+
errorMessage += ` [code: ${errorData.code}]`;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
errorMessage += `: ${text}`;
|
|
142
|
+
}
|
|
143
|
+
throw new Error(errorMessage);
|
|
144
|
+
}
|
|
145
|
+
return text ? JSON.parse(text) : null;
|
|
146
|
+
}
|
|
147
|
+
// ─── Main Action ────────────────────────────────────────────────────
|
|
148
|
+
async performAction() {
|
|
149
|
+
const { operation } = this.params;
|
|
150
|
+
try {
|
|
151
|
+
const result = await (async () => {
|
|
152
|
+
const p = this.params;
|
|
153
|
+
switch (operation) {
|
|
154
|
+
case 'send_message':
|
|
155
|
+
return await this.sendMessage(p);
|
|
156
|
+
case 'list_messages':
|
|
157
|
+
return await this.listMessages(p);
|
|
158
|
+
case 'edit_message':
|
|
159
|
+
return await this.editMessage(p);
|
|
160
|
+
case 'delete_message':
|
|
161
|
+
return await this.deleteMessage(p);
|
|
162
|
+
case 'pin_message':
|
|
163
|
+
return await this.pinMessage(p);
|
|
164
|
+
case 'add_reaction':
|
|
165
|
+
return await this.addReaction(p);
|
|
166
|
+
case 'list_channels':
|
|
167
|
+
return await this.listChannels(p);
|
|
168
|
+
case 'create_channel':
|
|
169
|
+
return await this.createChannel(p);
|
|
170
|
+
case 'delete_channel':
|
|
171
|
+
return await this.deleteChannel(p);
|
|
172
|
+
case 'create_thread':
|
|
173
|
+
return await this.createThread(p);
|
|
174
|
+
case 'list_threads':
|
|
175
|
+
return await this.listThreads(p);
|
|
176
|
+
case 'list_members':
|
|
177
|
+
return await this.listMembers(p);
|
|
178
|
+
case 'get_guild':
|
|
179
|
+
return await this.getGuild(p);
|
|
180
|
+
default:
|
|
181
|
+
throw new Error(`Unknown operation: ${operation}`);
|
|
182
|
+
}
|
|
183
|
+
})();
|
|
184
|
+
return result;
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
return {
|
|
188
|
+
operation,
|
|
189
|
+
success: false,
|
|
190
|
+
error: error instanceof Error ? error.message : String(error),
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// ─── Message Operations ─────────────────────────────────────────────
|
|
195
|
+
async sendMessage(params) {
|
|
196
|
+
const body = {};
|
|
197
|
+
if (params.content)
|
|
198
|
+
body.content = params.content;
|
|
199
|
+
if (params.embeds)
|
|
200
|
+
body.embeds = params.embeds;
|
|
201
|
+
if (params.tts)
|
|
202
|
+
body.tts = params.tts;
|
|
203
|
+
if (params.reply_to) {
|
|
204
|
+
body.message_reference = { message_id: params.reply_to };
|
|
205
|
+
}
|
|
206
|
+
const message = await this.discordRequest(`/channels/${params.channel_id}/messages`, 'POST', body);
|
|
207
|
+
return {
|
|
208
|
+
operation: 'send_message',
|
|
209
|
+
success: true,
|
|
210
|
+
message: message,
|
|
211
|
+
error: '',
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
async listMessages(params) {
|
|
215
|
+
const queryParams = new URLSearchParams();
|
|
216
|
+
if (params.limit)
|
|
217
|
+
queryParams.set('limit', String(params.limit));
|
|
218
|
+
if (params.before)
|
|
219
|
+
queryParams.set('before', params.before);
|
|
220
|
+
if (params.after)
|
|
221
|
+
queryParams.set('after', params.after);
|
|
222
|
+
const qs = queryParams.toString();
|
|
223
|
+
const messages = await this.discordRequest(`/channels/${params.channel_id}/messages${qs ? `?${qs}` : ''}`);
|
|
224
|
+
return {
|
|
225
|
+
operation: 'list_messages',
|
|
226
|
+
success: true,
|
|
227
|
+
messages: messages,
|
|
228
|
+
error: '',
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
async editMessage(params) {
|
|
232
|
+
const body = {};
|
|
233
|
+
if (params.content !== undefined)
|
|
234
|
+
body.content = params.content;
|
|
235
|
+
if (params.embeds)
|
|
236
|
+
body.embeds = params.embeds;
|
|
237
|
+
const message = await this.discordRequest(`/channels/${params.channel_id}/messages/${params.message_id}`, 'PATCH', body);
|
|
238
|
+
return {
|
|
239
|
+
operation: 'edit_message',
|
|
240
|
+
success: true,
|
|
241
|
+
message: message,
|
|
242
|
+
error: '',
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
async deleteMessage(params) {
|
|
246
|
+
await this.discordRequest(`/channels/${params.channel_id}/messages/${params.message_id}`, 'DELETE');
|
|
247
|
+
return {
|
|
248
|
+
operation: 'delete_message',
|
|
249
|
+
success: true,
|
|
250
|
+
error: '',
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
async pinMessage(params) {
|
|
254
|
+
await this.discordRequest(`/channels/${params.channel_id}/pins/${params.message_id}`, 'PUT');
|
|
255
|
+
return {
|
|
256
|
+
operation: 'pin_message',
|
|
257
|
+
success: true,
|
|
258
|
+
error: '',
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
// ─── Reaction Operations ────────────────────────────────────────────
|
|
262
|
+
async addReaction(params) {
|
|
263
|
+
const encodedEmoji = encodeURIComponent(params.emoji);
|
|
264
|
+
await this.discordRequest(`/channels/${params.channel_id}/messages/${params.message_id}/reactions/${encodedEmoji}/@me`, 'PUT');
|
|
265
|
+
return {
|
|
266
|
+
operation: 'add_reaction',
|
|
267
|
+
success: true,
|
|
268
|
+
error: '',
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
// ─── Channel Operations ─────────────────────────────────────────────
|
|
272
|
+
async listChannels(params) {
|
|
273
|
+
const guildId = this.getGuildId(params.guild_id);
|
|
274
|
+
const channels = await this.discordRequest(`/guilds/${guildId}/channels`);
|
|
275
|
+
return {
|
|
276
|
+
operation: 'list_channels',
|
|
277
|
+
success: true,
|
|
278
|
+
channels: channels,
|
|
279
|
+
error: '',
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
async createChannel(params) {
|
|
283
|
+
const guildId = this.getGuildId(params.guild_id);
|
|
284
|
+
const body = {
|
|
285
|
+
name: params.name,
|
|
286
|
+
type: CHANNEL_TYPE_MAP[params.type] ?? 0,
|
|
287
|
+
};
|
|
288
|
+
if (params.topic)
|
|
289
|
+
body.topic = params.topic;
|
|
290
|
+
if (params.parent_id)
|
|
291
|
+
body.parent_id = params.parent_id;
|
|
292
|
+
if (params.nsfw !== undefined)
|
|
293
|
+
body.nsfw = params.nsfw;
|
|
294
|
+
const channel = await this.discordRequest(`/guilds/${guildId}/channels`, 'POST', body);
|
|
295
|
+
return {
|
|
296
|
+
operation: 'create_channel',
|
|
297
|
+
success: true,
|
|
298
|
+
channel: channel,
|
|
299
|
+
error: '',
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
async deleteChannel(params) {
|
|
303
|
+
await this.discordRequest(`/channels/${params.channel_id}`, 'DELETE');
|
|
304
|
+
return {
|
|
305
|
+
operation: 'delete_channel',
|
|
306
|
+
success: true,
|
|
307
|
+
error: '',
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
// ─── Thread Operations ──────────────────────────────────────────────
|
|
311
|
+
async createThread(params) {
|
|
312
|
+
const endpoint = params.message_id
|
|
313
|
+
? `/channels/${params.channel_id}/messages/${params.message_id}/threads`
|
|
314
|
+
: `/channels/${params.channel_id}/threads`;
|
|
315
|
+
const body = {
|
|
316
|
+
name: params.name,
|
|
317
|
+
auto_archive_duration: Number(params.auto_archive_duration),
|
|
318
|
+
};
|
|
319
|
+
// Standalone threads (without a message) need type 11 (public thread)
|
|
320
|
+
if (!params.message_id) {
|
|
321
|
+
body.type = 11;
|
|
322
|
+
}
|
|
323
|
+
const thread = await this.discordRequest(endpoint, 'POST', body);
|
|
324
|
+
return {
|
|
325
|
+
operation: 'create_thread',
|
|
326
|
+
success: true,
|
|
327
|
+
thread: thread,
|
|
328
|
+
error: '',
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
async listThreads(params) {
|
|
332
|
+
const guildId = this.getGuildId(params.guild_id);
|
|
333
|
+
const result = (await this.discordRequest(`/guilds/${guildId}/threads/active`));
|
|
334
|
+
return {
|
|
335
|
+
operation: 'list_threads',
|
|
336
|
+
success: true,
|
|
337
|
+
threads: result?.threads || [],
|
|
338
|
+
error: '',
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
// ─── Member Operations ──────────────────────────────────────────────
|
|
342
|
+
async listMembers(params) {
|
|
343
|
+
const guildId = this.getGuildId(params.guild_id);
|
|
344
|
+
const queryParams = new URLSearchParams();
|
|
345
|
+
if (params.limit)
|
|
346
|
+
queryParams.set('limit', String(params.limit));
|
|
347
|
+
if (params.after)
|
|
348
|
+
queryParams.set('after', params.after);
|
|
349
|
+
const qs = queryParams.toString();
|
|
350
|
+
const members = await this.discordRequest(`/guilds/${guildId}/members${qs ? `?${qs}` : ''}`);
|
|
351
|
+
return {
|
|
352
|
+
operation: 'list_members',
|
|
353
|
+
success: true,
|
|
354
|
+
members: members,
|
|
355
|
+
error: '',
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
// ─── Guild Operations ───────────────────────────────────────────────
|
|
359
|
+
async getGuild(params) {
|
|
360
|
+
const guildId = this.getGuildId(params.guild_id);
|
|
361
|
+
const guild = await this.discordRequest(`/guilds/${guildId}`);
|
|
362
|
+
return {
|
|
363
|
+
operation: 'get_guild',
|
|
364
|
+
success: true,
|
|
365
|
+
guild: guild,
|
|
366
|
+
error: '',
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=discord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/discord/discord.ts"],"names":[],"mappings":"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"}
|