@opentabs-dev/opentabs-plugin-discord 0.0.74
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 +138 -0
- package/dist/adapter.iife.js +15389 -0
- package/dist/adapter.iife.js.map +7 -0
- package/dist/discord-api.d.ts +16 -0
- package/dist/discord-api.d.ts.map +1 -0
- package/dist/discord-api.js +232 -0
- package/dist/discord-api.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +78 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/add-reaction.d.ts +7 -0
- package/dist/tools/add-reaction.d.ts.map +1 -0
- package/dist/tools/add-reaction.js +28 -0
- package/dist/tools/add-reaction.js.map +1 -0
- package/dist/tools/create-channel.d.ts +21 -0
- package/dist/tools/create-channel.d.ts.map +1 -0
- package/dist/tools/create-channel.js +40 -0
- package/dist/tools/create-channel.js.map +1 -0
- package/dist/tools/create-thread.d.ts +19 -0
- package/dist/tools/create-thread.d.ts.map +1 -0
- package/dist/tools/create-thread.js +47 -0
- package/dist/tools/create-thread.js.map +1 -0
- package/dist/tools/delete-channel.d.ts +16 -0
- package/dist/tools/delete-channel.d.ts.map +1 -0
- package/dist/tools/delete-channel.js +25 -0
- package/dist/tools/delete-channel.js.map +1 -0
- package/dist/tools/delete-message.d.ts +6 -0
- package/dist/tools/delete-message.d.ts.map +1 -0
- package/dist/tools/delete-message.js +23 -0
- package/dist/tools/delete-message.js.map +1 -0
- package/dist/tools/edit-channel.d.ts +20 -0
- package/dist/tools/edit-channel.d.ts.map +1 -0
- package/dist/tools/edit-channel.js +39 -0
- package/dist/tools/edit-channel.js.map +1 -0
- package/dist/tools/edit-message.d.ts +23 -0
- package/dist/tools/edit-message.d.ts.map +1 -0
- package/dist/tools/edit-message.js +25 -0
- package/dist/tools/edit-message.js.map +1 -0
- package/dist/tools/get-channel-info.d.ts +16 -0
- package/dist/tools/get-channel-info.d.ts.map +1 -0
- package/dist/tools/get-channel-info.js +23 -0
- package/dist/tools/get-channel-info.js.map +1 -0
- package/dist/tools/get-guild-info.d.ts +18 -0
- package/dist/tools/get-guild-info.d.ts.map +1 -0
- package/dist/tools/get-guild-info.js +48 -0
- package/dist/tools/get-guild-info.js.map +1 -0
- package/dist/tools/get-message.d.ts +22 -0
- package/dist/tools/get-message.d.ts.map +1 -0
- package/dist/tools/get-message.js +33 -0
- package/dist/tools/get-message.js.map +1 -0
- package/dist/tools/get-user-profile.d.ts +19 -0
- package/dist/tools/get-user-profile.d.ts.map +1 -0
- package/dist/tools/get-user-profile.js +49 -0
- package/dist/tools/get-user-profile.js.map +1 -0
- package/dist/tools/list-channels.d.ts +16 -0
- package/dist/tools/list-channels.d.ts.map +1 -0
- package/dist/tools/list-channels.js +24 -0
- package/dist/tools/list-channels.js.map +1 -0
- package/dist/tools/list-dms.d.ts +16 -0
- package/dist/tools/list-dms.d.ts.map +1 -0
- package/dist/tools/list-dms.js +36 -0
- package/dist/tools/list-dms.js.map +1 -0
- package/dist/tools/list-guilds.d.ts +16 -0
- package/dist/tools/list-guilds.d.ts.map +1 -0
- package/dist/tools/list-guilds.js +34 -0
- package/dist/tools/list-guilds.js.map +1 -0
- package/dist/tools/list-members.d.ts +20 -0
- package/dist/tools/list-members.d.ts.map +1 -0
- package/dist/tools/list-members.js +45 -0
- package/dist/tools/list-members.js.map +1 -0
- package/dist/tools/list-pinned-messages.d.ts +21 -0
- package/dist/tools/list-pinned-messages.d.ts.map +1 -0
- package/dist/tools/list-pinned-messages.js +24 -0
- package/dist/tools/list-pinned-messages.js.map +1 -0
- package/dist/tools/list-roles.d.ts +15 -0
- package/dist/tools/list-roles.d.ts.map +1 -0
- package/dist/tools/list-roles.js +41 -0
- package/dist/tools/list-roles.js.map +1 -0
- package/dist/tools/open-dm.d.ts +15 -0
- package/dist/tools/open-dm.d.ts.map +1 -0
- package/dist/tools/open-dm.js +35 -0
- package/dist/tools/open-dm.js.map +1 -0
- package/dist/tools/pin-message.d.ts +6 -0
- package/dist/tools/pin-message.d.ts.map +1 -0
- package/dist/tools/pin-message.js +23 -0
- package/dist/tools/pin-message.js.map +1 -0
- package/dist/tools/read-messages.d.ts +25 -0
- package/dist/tools/read-messages.d.ts.map +1 -0
- package/dist/tools/read-messages.js +37 -0
- package/dist/tools/read-messages.js.map +1 -0
- package/dist/tools/read-thread.d.ts +24 -0
- package/dist/tools/read-thread.d.ts.map +1 -0
- package/dist/tools/read-thread.js +34 -0
- package/dist/tools/read-thread.js.map +1 -0
- package/dist/tools/remove-reaction.d.ts +7 -0
- package/dist/tools/remove-reaction.d.ts.map +1 -0
- package/dist/tools/remove-reaction.js +28 -0
- package/dist/tools/remove-reaction.js.map +1 -0
- package/dist/tools/schemas.d.ts +89 -0
- package/dist/tools/schemas.d.ts.map +1 -0
- package/dist/tools/schemas.js +72 -0
- package/dist/tools/schemas.js.map +1 -0
- package/dist/tools/search-messages.d.ts +28 -0
- package/dist/tools/search-messages.d.ts.map +1 -0
- package/dist/tools/search-messages.js +46 -0
- package/dist/tools/search-messages.js.map +1 -0
- package/dist/tools/send-message.d.ts +23 -0
- package/dist/tools/send-message.d.ts.map +1 -0
- package/dist/tools/send-message.js +32 -0
- package/dist/tools/send-message.js.map +1 -0
- package/dist/tools/unpin-message.d.ts +6 -0
- package/dist/tools/unpin-message.d.ts.map +1 -0
- package/dist/tools/unpin-message.js +23 -0
- package/dist/tools/unpin-message.js.map +1 -0
- package/dist/tools/upload-file.d.ts +25 -0
- package/dist/tools/upload-file.d.ts.map +1 -0
- package/dist/tools/upload-file.js +53 -0
- package/dist/tools/upload-file.js.map +1 -0
- package/dist/tools.json +2681 -0
- package/package.json +55 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const isDiscordAuthenticated: () => boolean;
|
|
2
|
+
/**
|
|
3
|
+
* Wait for Discord's SPA to hydrate and populate its internal token manager.
|
|
4
|
+
* Polls at 500ms intervals for up to 10 seconds.
|
|
5
|
+
*/
|
|
6
|
+
export declare const waitForDiscordAuth: () => Promise<boolean>;
|
|
7
|
+
/**
|
|
8
|
+
* Make an authenticated request to the Discord API (v9).
|
|
9
|
+
* Automatically extracts the token and handles error classification.
|
|
10
|
+
*/
|
|
11
|
+
export declare const discordApi: <T extends Record<string, unknown>>(endpoint: string, options?: {
|
|
12
|
+
method?: string;
|
|
13
|
+
body?: Record<string, unknown> | FormData;
|
|
14
|
+
query?: Record<string, string | number | boolean | undefined>;
|
|
15
|
+
}) => Promise<T>;
|
|
16
|
+
//# sourceMappingURL=discord-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord-api.d.ts","sourceRoot":"","sources":["../src/discord-api.ts"],"names":[],"mappings":"AAuEA,eAAO,MAAM,sBAAsB,QAAO,OAA6B,CAAC;AAExE;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,OAAO,CAO1D,CAAC;AAgCF;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAU,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,UAAU,MAAM,EAChB,UAAS;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;CAC1D,KACL,OAAO,CAAC,CAAC,CA0IX,CAAC"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { clearAuthCache, getAuthCache, parseRetryAfterMs, setAuthCache, ToolError, waitUntil, } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Extract the auth token from Discord's webpack module registry.
|
|
4
|
+
* Discord keeps the token in an internal module that exposes a `getToken()`
|
|
5
|
+
* method. We push a one-shot chunk into `webpackChunkdiscord_app` to walk
|
|
6
|
+
* the module cache and find it. Many i18n modules also have `getToken()`
|
|
7
|
+
* (returning `{locale, ast}`), so we filter by return type — only a string
|
|
8
|
+
* result is the auth token.
|
|
9
|
+
*/
|
|
10
|
+
const getTokenFromWebpack = () => {
|
|
11
|
+
try {
|
|
12
|
+
const chunks = globalThis.webpackChunkdiscord_app;
|
|
13
|
+
if (!chunks)
|
|
14
|
+
return null;
|
|
15
|
+
let token = null;
|
|
16
|
+
chunks.push([
|
|
17
|
+
[Symbol()],
|
|
18
|
+
{},
|
|
19
|
+
(require) => {
|
|
20
|
+
for (const mod of Object.values(require.c)) {
|
|
21
|
+
const exports = mod?.exports;
|
|
22
|
+
if (!exports)
|
|
23
|
+
continue;
|
|
24
|
+
const def = (exports.default ?? exports);
|
|
25
|
+
if (typeof def?.getToken !== 'function')
|
|
26
|
+
continue;
|
|
27
|
+
const result = def.getToken();
|
|
28
|
+
if (typeof result === 'string' && result.length > 0) {
|
|
29
|
+
token = result;
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
]);
|
|
35
|
+
return token;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Extract auth token from Discord. Checks two sources in order:
|
|
43
|
+
* 1. Persisted cache on globalThis (survives adapter re-injection)
|
|
44
|
+
* 2. Discord's internal webpack module registry via `getToken()`
|
|
45
|
+
*
|
|
46
|
+
* Once extracted, the token is cached on globalThis so subsequent calls
|
|
47
|
+
* avoid the webpack walk.
|
|
48
|
+
*/
|
|
49
|
+
const getAuth = () => {
|
|
50
|
+
const persisted = getAuthCache('discord');
|
|
51
|
+
if (persisted)
|
|
52
|
+
return { token: persisted };
|
|
53
|
+
const token = getTokenFromWebpack();
|
|
54
|
+
if (!token)
|
|
55
|
+
return null;
|
|
56
|
+
setAuthCache('discord', token);
|
|
57
|
+
return { token };
|
|
58
|
+
};
|
|
59
|
+
export const isDiscordAuthenticated = () => getAuth() !== null;
|
|
60
|
+
/**
|
|
61
|
+
* Wait for Discord's SPA to hydrate and populate its internal token manager.
|
|
62
|
+
* Polls at 500ms intervals for up to 10 seconds.
|
|
63
|
+
*/
|
|
64
|
+
export const waitForDiscordAuth = async () => {
|
|
65
|
+
try {
|
|
66
|
+
await waitUntil(() => isDiscordAuthenticated(), { interval: 500, timeout: 10_000 });
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
// Discord API error codes that map to specific error categories
|
|
74
|
+
const AUTH_ERRORS = new Set([
|
|
75
|
+
0, // General auth failure
|
|
76
|
+
40001, // Unauthorized
|
|
77
|
+
40002, // Verification required
|
|
78
|
+
50014, // Invalid authentication token
|
|
79
|
+
]);
|
|
80
|
+
const NOT_FOUND_ERRORS = new Set([
|
|
81
|
+
10003, // Unknown Channel
|
|
82
|
+
10004, // Unknown Guild
|
|
83
|
+
10006, // Unknown Invite
|
|
84
|
+
10008, // Unknown Message
|
|
85
|
+
10013, // Unknown User
|
|
86
|
+
10011, // Unknown Role
|
|
87
|
+
10014, // Unknown Emoji
|
|
88
|
+
10015, // Unknown Webhook
|
|
89
|
+
]);
|
|
90
|
+
const VALIDATION_ERRORS = new Set([
|
|
91
|
+
50001, // Missing Access
|
|
92
|
+
50003, // Cannot execute on DM channel
|
|
93
|
+
50006, // Cannot send empty message
|
|
94
|
+
50007, // Cannot send messages to this user
|
|
95
|
+
50008, // Cannot edit message by another user
|
|
96
|
+
50013, // Missing Permissions
|
|
97
|
+
50035, // Invalid Form Body
|
|
98
|
+
50109, // Request body contains invalid JSON
|
|
99
|
+
]);
|
|
100
|
+
/**
|
|
101
|
+
* Make an authenticated request to the Discord API (v9).
|
|
102
|
+
* Automatically extracts the token and handles error classification.
|
|
103
|
+
*/
|
|
104
|
+
export const discordApi = async (endpoint, options = {}) => {
|
|
105
|
+
const auth = getAuth();
|
|
106
|
+
if (!auth) {
|
|
107
|
+
throw ToolError.auth('Not authenticated — no Discord token found. Please log in to Discord.');
|
|
108
|
+
}
|
|
109
|
+
const { method = 'GET', body, query } = options;
|
|
110
|
+
let url = `https://discord.com/api/v9${endpoint}`;
|
|
111
|
+
if (query) {
|
|
112
|
+
const params = new URLSearchParams();
|
|
113
|
+
for (const [key, value] of Object.entries(query)) {
|
|
114
|
+
if (value !== undefined) {
|
|
115
|
+
params.append(key, String(value));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const qs = params.toString();
|
|
119
|
+
if (qs)
|
|
120
|
+
url += `?${qs}`;
|
|
121
|
+
}
|
|
122
|
+
const headers = {
|
|
123
|
+
Authorization: auth.token,
|
|
124
|
+
};
|
|
125
|
+
let fetchBody;
|
|
126
|
+
if (body instanceof FormData) {
|
|
127
|
+
fetchBody = body;
|
|
128
|
+
// Do not set Content-Type for FormData — browser sets multipart boundary
|
|
129
|
+
}
|
|
130
|
+
else if (body) {
|
|
131
|
+
headers['Content-Type'] = 'application/json';
|
|
132
|
+
fetchBody = JSON.stringify(body);
|
|
133
|
+
}
|
|
134
|
+
let response;
|
|
135
|
+
try {
|
|
136
|
+
response = await fetch(url, {
|
|
137
|
+
method,
|
|
138
|
+
headers,
|
|
139
|
+
body: fetchBody,
|
|
140
|
+
credentials: 'include',
|
|
141
|
+
signal: AbortSignal.timeout(30_000),
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
if (err instanceof DOMException && err.name === 'TimeoutError') {
|
|
146
|
+
throw ToolError.timeout(`Discord API request timed out: ${method} ${endpoint}`);
|
|
147
|
+
}
|
|
148
|
+
if (err instanceof DOMException && err.name === 'AbortError') {
|
|
149
|
+
throw new ToolError('Request was aborted', 'aborted');
|
|
150
|
+
}
|
|
151
|
+
throw new ToolError(`Network error calling Discord API: ${err instanceof Error ? err.message : String(err)}`, 'network_error', { category: 'internal', retryable: true });
|
|
152
|
+
}
|
|
153
|
+
// Handle HTTP-level errors
|
|
154
|
+
if (!response.ok) {
|
|
155
|
+
const retryAfterHeader = response.headers.get('Retry-After');
|
|
156
|
+
const retryMs = retryAfterHeader !== null ? parseRetryAfterMs(retryAfterHeader) : undefined;
|
|
157
|
+
const errorText = await response.text().catch(() => '');
|
|
158
|
+
const errorBody = errorText.substring(0, 512);
|
|
159
|
+
if (response.status === 429) {
|
|
160
|
+
let retryAfterMs = retryMs;
|
|
161
|
+
try {
|
|
162
|
+
const parsed = JSON.parse(errorText);
|
|
163
|
+
if (typeof parsed.retry_after === 'number') {
|
|
164
|
+
retryAfterMs = parsed.retry_after * 1000;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
// Use header value
|
|
169
|
+
}
|
|
170
|
+
throw ToolError.rateLimited(`Discord API rate limited: ${method} ${endpoint} — ${errorBody}`, retryAfterMs);
|
|
171
|
+
}
|
|
172
|
+
// Parse error body for Discord-specific error codes before classifying by HTTP status.
|
|
173
|
+
// Discord uses 403 for both "unauthorized" and "missing permissions" — the error code
|
|
174
|
+
// in the response body distinguishes them.
|
|
175
|
+
let discordCode;
|
|
176
|
+
let discordMessage;
|
|
177
|
+
try {
|
|
178
|
+
const parsed = JSON.parse(errorText);
|
|
179
|
+
discordCode = parsed.code;
|
|
180
|
+
discordMessage = parsed.message;
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
// Not JSON — classify by HTTP status only
|
|
184
|
+
}
|
|
185
|
+
if (discordCode !== undefined) {
|
|
186
|
+
if (VALIDATION_ERRORS.has(discordCode)) {
|
|
187
|
+
throw ToolError.validation(`Discord API error: ${discordMessage ?? errorBody} (code ${String(discordCode)})`);
|
|
188
|
+
}
|
|
189
|
+
if (NOT_FOUND_ERRORS.has(discordCode)) {
|
|
190
|
+
throw ToolError.notFound(`Discord API error: ${discordMessage ?? errorBody} (code ${String(discordCode)})`);
|
|
191
|
+
}
|
|
192
|
+
if (AUTH_ERRORS.has(discordCode)) {
|
|
193
|
+
clearAuthCache('discord');
|
|
194
|
+
throw ToolError.auth(`Discord API error: ${discordMessage ?? errorBody} (code ${String(discordCode)})`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (response.status === 401 || response.status === 403) {
|
|
198
|
+
clearAuthCache('discord');
|
|
199
|
+
throw ToolError.auth(`Discord API auth error (${String(response.status)}): ${errorBody}`);
|
|
200
|
+
}
|
|
201
|
+
if (response.status === 404) {
|
|
202
|
+
throw ToolError.notFound(`Discord API not found: ${method} ${endpoint} — ${errorBody}`);
|
|
203
|
+
}
|
|
204
|
+
throw ToolError.internal(`Discord API error (${String(response.status)}): ${method} ${endpoint} — ${errorBody}`);
|
|
205
|
+
}
|
|
206
|
+
// 204 No Content
|
|
207
|
+
if (response.status === 204) {
|
|
208
|
+
return {};
|
|
209
|
+
}
|
|
210
|
+
let data;
|
|
211
|
+
try {
|
|
212
|
+
data = await response.json();
|
|
213
|
+
}
|
|
214
|
+
catch {
|
|
215
|
+
throw ToolError.internal(`Discord API returned invalid JSON: ${method} ${endpoint}`);
|
|
216
|
+
}
|
|
217
|
+
// Discord API-level errors (some endpoints return 200 with error codes in body)
|
|
218
|
+
if (typeof data === 'object' && data !== null && 'code' in data && 'message' in data) {
|
|
219
|
+
const record = data;
|
|
220
|
+
if (AUTH_ERRORS.has(record.code)) {
|
|
221
|
+
throw ToolError.auth(`Discord API error: ${record.message} (code ${String(record.code)})`);
|
|
222
|
+
}
|
|
223
|
+
if (NOT_FOUND_ERRORS.has(record.code)) {
|
|
224
|
+
throw ToolError.notFound(`Discord API error: ${record.message} (code ${String(record.code)})`);
|
|
225
|
+
}
|
|
226
|
+
if (VALIDATION_ERRORS.has(record.code)) {
|
|
227
|
+
throw ToolError.validation(`Discord API error: ${record.message} (code ${String(record.code)})`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return data;
|
|
231
|
+
};
|
|
232
|
+
//# sourceMappingURL=discord-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord-api.js","sourceRoot":"","sources":["../src/discord-api.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { OpenTabsPlugin } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import type { ToolDefinition } from '@opentabs-dev/plugin-sdk';
|
|
3
|
+
declare class DiscordPlugin extends OpenTabsPlugin {
|
|
4
|
+
readonly name = "discord";
|
|
5
|
+
readonly description = "OpenTabs plugin for Discord";
|
|
6
|
+
readonly displayName = "Discord";
|
|
7
|
+
readonly urlPatterns: string[];
|
|
8
|
+
readonly homepage = "https://discord.com/channels/@me";
|
|
9
|
+
readonly tools: ToolDefinition[];
|
|
10
|
+
isReady(): Promise<boolean>;
|
|
11
|
+
}
|
|
12
|
+
declare const _default: DiscordPlugin;
|
|
13
|
+
export default _default;
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AA6B/D,cAAM,aAAc,SAAQ,cAAc;IACxC,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,WAAW,iCAAiC;IACrD,SAAkB,WAAW,aAAa;IAC1C,QAAQ,CAAC,WAAW,WAAyB;IAC7C,SAAkB,QAAQ,sCAAsC;IAChE,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,CAmC9B;IAEI,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;CAIlC;;AAED,wBAAmC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { OpenTabsPlugin } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { isDiscordAuthenticated, waitForDiscordAuth } from './discord-api.js';
|
|
3
|
+
import { sendMessage } from './tools/send-message.js';
|
|
4
|
+
import { editMessage } from './tools/edit-message.js';
|
|
5
|
+
import { deleteMessage } from './tools/delete-message.js';
|
|
6
|
+
import { readMessages } from './tools/read-messages.js';
|
|
7
|
+
import { readThread } from './tools/read-thread.js';
|
|
8
|
+
import { searchMessages } from './tools/search-messages.js';
|
|
9
|
+
import { getMessage } from './tools/get-message.js';
|
|
10
|
+
import { listPinnedMessages } from './tools/list-pinned-messages.js';
|
|
11
|
+
import { listGuilds } from './tools/list-guilds.js';
|
|
12
|
+
import { getGuildInfo } from './tools/get-guild-info.js';
|
|
13
|
+
import { listChannels } from './tools/list-channels.js';
|
|
14
|
+
import { getChannelInfo } from './tools/get-channel-info.js';
|
|
15
|
+
import { createChannel } from './tools/create-channel.js';
|
|
16
|
+
import { editChannel } from './tools/edit-channel.js';
|
|
17
|
+
import { deleteChannel } from './tools/delete-channel.js';
|
|
18
|
+
import { listMembers } from './tools/list-members.js';
|
|
19
|
+
import { listRoles } from './tools/list-roles.js';
|
|
20
|
+
import { getUserProfile } from './tools/get-user-profile.js';
|
|
21
|
+
import { listDms } from './tools/list-dms.js';
|
|
22
|
+
import { openDm } from './tools/open-dm.js';
|
|
23
|
+
import { addReaction } from './tools/add-reaction.js';
|
|
24
|
+
import { removeReaction } from './tools/remove-reaction.js';
|
|
25
|
+
import { pinMessage } from './tools/pin-message.js';
|
|
26
|
+
import { unpinMessage } from './tools/unpin-message.js';
|
|
27
|
+
import { createThread } from './tools/create-thread.js';
|
|
28
|
+
import { uploadFile } from './tools/upload-file.js';
|
|
29
|
+
class DiscordPlugin extends OpenTabsPlugin {
|
|
30
|
+
name = 'discord';
|
|
31
|
+
description = 'OpenTabs plugin for Discord';
|
|
32
|
+
displayName = 'Discord';
|
|
33
|
+
urlPatterns = ['*://discord.com/*'];
|
|
34
|
+
homepage = 'https://discord.com/channels/@me';
|
|
35
|
+
tools = [
|
|
36
|
+
// Messages
|
|
37
|
+
sendMessage,
|
|
38
|
+
editMessage,
|
|
39
|
+
deleteMessage,
|
|
40
|
+
readMessages,
|
|
41
|
+
readThread,
|
|
42
|
+
searchMessages,
|
|
43
|
+
getMessage,
|
|
44
|
+
listPinnedMessages,
|
|
45
|
+
// Servers
|
|
46
|
+
listGuilds,
|
|
47
|
+
getGuildInfo,
|
|
48
|
+
// Channels
|
|
49
|
+
listChannels,
|
|
50
|
+
getChannelInfo,
|
|
51
|
+
createChannel,
|
|
52
|
+
editChannel,
|
|
53
|
+
deleteChannel,
|
|
54
|
+
// Members & Roles
|
|
55
|
+
listMembers,
|
|
56
|
+
listRoles,
|
|
57
|
+
getUserProfile,
|
|
58
|
+
// DMs
|
|
59
|
+
listDms,
|
|
60
|
+
openDm,
|
|
61
|
+
// Reactions & Pins
|
|
62
|
+
addReaction,
|
|
63
|
+
removeReaction,
|
|
64
|
+
pinMessage,
|
|
65
|
+
unpinMessage,
|
|
66
|
+
// Threads
|
|
67
|
+
createThread,
|
|
68
|
+
// Files
|
|
69
|
+
uploadFile,
|
|
70
|
+
];
|
|
71
|
+
async isReady() {
|
|
72
|
+
if (isDiscordAuthenticated())
|
|
73
|
+
return true;
|
|
74
|
+
return waitForDiscordAuth();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export default new DiscordPlugin();
|
|
78
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,aAAc,SAAQ,cAAc;IAC/B,IAAI,GAAG,SAAS,CAAC;IACjB,WAAW,GAAG,6BAA6B,CAAC;IACnC,WAAW,GAAG,SAAS,CAAC;IACjC,WAAW,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC3B,QAAQ,GAAG,kCAAkC,CAAC;IACvD,KAAK,GAAqB;QACjC,WAAW;QACX,WAAW;QACX,WAAW;QACX,aAAa;QACb,YAAY;QACZ,UAAU;QACV,cAAc;QACd,UAAU;QACV,kBAAkB;QAClB,UAAU;QACV,UAAU;QACV,YAAY;QACZ,WAAW;QACX,YAAY;QACZ,cAAc;QACd,aAAa;QACb,WAAW;QACX,aAAa;QACb,kBAAkB;QAClB,WAAW;QACX,SAAS;QACT,cAAc;QACd,MAAM;QACN,OAAO;QACP,MAAM;QACN,mBAAmB;QACnB,WAAW;QACX,cAAc;QACd,UAAU;QACV,YAAY;QACZ,UAAU;QACV,YAAY;QACZ,QAAQ;QACR,UAAU;KACX,CAAC;IAEF,KAAK,CAAC,OAAO;QACX,IAAI,sBAAsB,EAAE;YAAE,OAAO,IAAI,CAAC;QAC1C,OAAO,kBAAkB,EAAE,CAAC;IAC9B,CAAC;CACF;AAED,eAAe,IAAI,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const addReaction: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
channel: z.ZodString;
|
|
4
|
+
message_id: z.ZodString;
|
|
5
|
+
emoji: z.ZodString;
|
|
6
|
+
}, z.core.$strip>, z.ZodObject<{}, z.core.$strip>>;
|
|
7
|
+
//# sourceMappingURL=add-reaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-reaction.d.ts","sourceRoot":"","sources":["../../src/tools/add-reaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,WAAW;;;;kDAuBtB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { discordApi } from '../discord-api.js';
|
|
4
|
+
export const addReaction = defineTool({
|
|
5
|
+
name: 'add_reaction',
|
|
6
|
+
displayName: 'Add Reaction',
|
|
7
|
+
description: 'Add an emoji reaction to a message',
|
|
8
|
+
summary: 'Add an emoji reaction to a message',
|
|
9
|
+
icon: 'smile-plus',
|
|
10
|
+
group: 'Reactions',
|
|
11
|
+
input: z.object({
|
|
12
|
+
channel: z.string().min(1).describe('Channel ID where the message is located'),
|
|
13
|
+
message_id: z.string().min(1).describe('Message ID to react to'),
|
|
14
|
+
emoji: z
|
|
15
|
+
.string()
|
|
16
|
+
.min(1)
|
|
17
|
+
.describe('Emoji to react with — use Unicode emoji (e.g., "👍") or custom emoji format "name:id"'),
|
|
18
|
+
}),
|
|
19
|
+
output: z.object({}),
|
|
20
|
+
handle: async (params) => {
|
|
21
|
+
const emoji = encodeURIComponent(params.emoji);
|
|
22
|
+
await discordApi(`/channels/${params.channel}/messages/${params.message_id}/reactions/${emoji}/@me`, {
|
|
23
|
+
method: 'PUT',
|
|
24
|
+
});
|
|
25
|
+
return {};
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=add-reaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-reaction.js","sourceRoot":"","sources":["../../src/tools/add-reaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,oCAAoC;IACjD,OAAO,EAAE,oCAAoC;IAC7C,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QAC9E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QAChE,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,uFAAuF,CAAC;KACrG,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACpB,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,UAAU,CAAC,aAAa,MAAM,CAAC,OAAO,aAAa,MAAM,CAAC,UAAU,cAAc,KAAK,MAAM,EAAE;YACnG,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const createChannel: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
guild_id: z.ZodString;
|
|
4
|
+
name: z.ZodString;
|
|
5
|
+
type: z.ZodOptional<z.ZodNumber>;
|
|
6
|
+
topic: z.ZodOptional<z.ZodString>;
|
|
7
|
+
parent_id: z.ZodOptional<z.ZodString>;
|
|
8
|
+
nsfw: z.ZodOptional<z.ZodBoolean>;
|
|
9
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
10
|
+
channel: z.ZodObject<{
|
|
11
|
+
id: z.ZodString;
|
|
12
|
+
type: z.ZodNumber;
|
|
13
|
+
guild_id: z.ZodString;
|
|
14
|
+
name: z.ZodString;
|
|
15
|
+
topic: z.ZodNullable<z.ZodString>;
|
|
16
|
+
position: z.ZodNumber;
|
|
17
|
+
parent_id: z.ZodNullable<z.ZodString>;
|
|
18
|
+
nsfw: z.ZodBoolean;
|
|
19
|
+
}, z.core.$strip>;
|
|
20
|
+
}, z.core.$strip>>;
|
|
21
|
+
//# sourceMappingURL=create-channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-channel.d.ts","sourceRoot":"","sources":["../../src/tools/create-channel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;kBA+BxB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { discordApi } from '../discord-api.js';
|
|
4
|
+
import { channelSchema, mapChannel } from './schemas.js';
|
|
5
|
+
export const createChannel = defineTool({
|
|
6
|
+
name: 'create_channel',
|
|
7
|
+
displayName: 'Create Channel',
|
|
8
|
+
description: 'Create a new channel in a Discord guild (server). Requires Manage Channels permission.',
|
|
9
|
+
summary: 'Create a new channel in a server',
|
|
10
|
+
icon: 'plus-circle',
|
|
11
|
+
group: 'Channels',
|
|
12
|
+
input: z.object({
|
|
13
|
+
guild_id: z.string().min(1).describe('Guild (server) ID to create the channel in'),
|
|
14
|
+
name: z.string().min(1).describe('Channel name (lowercase, hyphens, max 100 chars)'),
|
|
15
|
+
type: z.number().int().optional().describe('Channel type: 0=text (default), 2=voice, 4=category, 5=announcement'),
|
|
16
|
+
topic: z.string().optional().describe('Channel topic (max 1024 chars for text channels)'),
|
|
17
|
+
parent_id: z.string().optional().describe('Parent category ID to nest the channel under'),
|
|
18
|
+
nsfw: z.boolean().optional().describe('Whether the channel is NSFW'),
|
|
19
|
+
}),
|
|
20
|
+
output: z.object({
|
|
21
|
+
channel: channelSchema.describe('The created channel'),
|
|
22
|
+
}),
|
|
23
|
+
handle: async (params) => {
|
|
24
|
+
const body = { name: params.name };
|
|
25
|
+
if (params.type !== undefined)
|
|
26
|
+
body.type = params.type;
|
|
27
|
+
if (params.topic)
|
|
28
|
+
body.topic = params.topic;
|
|
29
|
+
if (params.parent_id)
|
|
30
|
+
body.parent_id = params.parent_id;
|
|
31
|
+
if (params.nsfw !== undefined)
|
|
32
|
+
body.nsfw = params.nsfw;
|
|
33
|
+
const data = await discordApi(`/guilds/${params.guild_id}/channels`, {
|
|
34
|
+
method: 'POST',
|
|
35
|
+
body,
|
|
36
|
+
});
|
|
37
|
+
return { channel: mapChannel(data) };
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=create-channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-channel.js","sourceRoot":"","sources":["../../src/tools/create-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;IACtC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,wFAAwF;IACrG,OAAO,EAAE,kCAAkC;IAC3C,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QAClF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QACpF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;QACjH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QACzF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;QACzF,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KACrE,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC;KACvD,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5D,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACvD,IAAI,MAAM,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC5C,IAAI,MAAM,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACxD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAEvD,MAAM,IAAI,GAAG,MAAM,UAAU,CAA0B,WAAW,MAAM,CAAC,QAAQ,WAAW,EAAE;YAC5F,MAAM,EAAE,MAAM;YACd,IAAI;SACL,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACvC,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const createThread: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
channel: z.ZodString;
|
|
4
|
+
name: z.ZodString;
|
|
5
|
+
message_id: z.ZodOptional<z.ZodString>;
|
|
6
|
+
auto_archive_duration: z.ZodOptional<z.ZodNumber>;
|
|
7
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
8
|
+
thread: z.ZodObject<{
|
|
9
|
+
id: z.ZodString;
|
|
10
|
+
type: z.ZodNumber;
|
|
11
|
+
guild_id: z.ZodString;
|
|
12
|
+
name: z.ZodString;
|
|
13
|
+
topic: z.ZodNullable<z.ZodString>;
|
|
14
|
+
position: z.ZodNumber;
|
|
15
|
+
parent_id: z.ZodNullable<z.ZodString>;
|
|
16
|
+
nsfw: z.ZodBoolean;
|
|
17
|
+
}, z.core.$strip>;
|
|
18
|
+
}, z.core.$strip>>;
|
|
19
|
+
//# sourceMappingURL=create-thread.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-thread.d.ts","sourceRoot":"","sources":["../../src/tools/create-thread.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;kBA2CvB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { discordApi } from '../discord-api.js';
|
|
4
|
+
import { channelSchema, mapChannel } from './schemas.js';
|
|
5
|
+
export const createThread = defineTool({
|
|
6
|
+
name: 'create_thread',
|
|
7
|
+
displayName: 'Create Thread',
|
|
8
|
+
description: 'Create a new thread from a message, or a standalone thread in a channel. Threads are temporary sub-channels for focused conversation.',
|
|
9
|
+
summary: 'Create a new thread',
|
|
10
|
+
icon: 'git-branch',
|
|
11
|
+
group: 'Channels',
|
|
12
|
+
input: z.object({
|
|
13
|
+
channel: z.string().min(1).describe('Channel ID to create the thread in'),
|
|
14
|
+
name: z.string().min(1).describe('Thread name (max 100 chars)'),
|
|
15
|
+
message_id: z.string().optional().describe('Message ID to start a thread from (omit for a standalone thread)'),
|
|
16
|
+
auto_archive_duration: z
|
|
17
|
+
.number()
|
|
18
|
+
.int()
|
|
19
|
+
.optional()
|
|
20
|
+
.describe('Minutes of inactivity before auto-archiving: 60, 1440, 4320, or 10080'),
|
|
21
|
+
}),
|
|
22
|
+
output: z.object({
|
|
23
|
+
thread: channelSchema.describe('The created thread channel'),
|
|
24
|
+
}),
|
|
25
|
+
handle: async (params) => {
|
|
26
|
+
const body = { name: params.name };
|
|
27
|
+
if (params.auto_archive_duration) {
|
|
28
|
+
body.auto_archive_duration = params.auto_archive_duration;
|
|
29
|
+
}
|
|
30
|
+
let endpoint;
|
|
31
|
+
if (params.message_id) {
|
|
32
|
+
// Create thread from a message
|
|
33
|
+
endpoint = `/channels/${params.channel}/messages/${params.message_id}/threads`;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
// Create standalone thread (requires type)
|
|
37
|
+
endpoint = `/channels/${params.channel}/threads`;
|
|
38
|
+
body.type = 11; // PUBLIC_THREAD
|
|
39
|
+
}
|
|
40
|
+
const data = await discordApi(endpoint, {
|
|
41
|
+
method: 'POST',
|
|
42
|
+
body,
|
|
43
|
+
});
|
|
44
|
+
return { thread: mapChannel(data) };
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=create-thread.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-thread.js","sourceRoot":"","sources":["../../src/tools/create-thread.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;IACrC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,eAAe;IAC5B,WAAW,EACT,uIAAuI;IACzI,OAAO,EAAE,qBAAqB;IAC9B,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QACzE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QAC/D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;QAC9G,qBAAqB,EAAE,CAAC;aACrB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,CAAC,uEAAuE,CAAC;KACrF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,4BAA4B,CAAC;KAC7D,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5D,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACjC,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;QAC5D,CAAC;QAED,IAAI,QAAgB,CAAC;QACrB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,+BAA+B;YAC/B,QAAQ,GAAG,aAAa,MAAM,CAAC,OAAO,aAAa,MAAM,CAAC,UAAU,UAAU,CAAC;QACjF,CAAC;aAAM,CAAC;YACN,2CAA2C;YAC3C,QAAQ,GAAG,aAAa,MAAM,CAAC,OAAO,UAAU,CAAC;YACjD,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,gBAAgB;QAClC,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,UAAU,CAA0B,QAAQ,EAAE;YAC/D,MAAM,EAAE,MAAM;YACd,IAAI;SACL,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACtC,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const deleteChannel: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
channel: z.ZodString;
|
|
4
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
5
|
+
channel: z.ZodObject<{
|
|
6
|
+
id: z.ZodString;
|
|
7
|
+
type: z.ZodNumber;
|
|
8
|
+
guild_id: z.ZodString;
|
|
9
|
+
name: z.ZodString;
|
|
10
|
+
topic: z.ZodNullable<z.ZodString>;
|
|
11
|
+
position: z.ZodNumber;
|
|
12
|
+
parent_id: z.ZodNullable<z.ZodString>;
|
|
13
|
+
nsfw: z.ZodBoolean;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
}, z.core.$strip>>;
|
|
16
|
+
//# sourceMappingURL=delete-channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-channel.d.ts","sourceRoot":"","sources":["../../src/tools/delete-channel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;kBAmBxB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { discordApi } from '../discord-api.js';
|
|
4
|
+
import { channelSchema, mapChannel } from './schemas.js';
|
|
5
|
+
export const deleteChannel = defineTool({
|
|
6
|
+
name: 'delete_channel',
|
|
7
|
+
displayName: 'Delete Channel',
|
|
8
|
+
description: 'Delete a Discord channel. This action is permanent and cannot be undone.',
|
|
9
|
+
summary: 'Delete a channel permanently',
|
|
10
|
+
icon: 'trash-2',
|
|
11
|
+
group: 'Channels',
|
|
12
|
+
input: z.object({
|
|
13
|
+
channel: z.string().min(1).describe('Channel ID to delete'),
|
|
14
|
+
}),
|
|
15
|
+
output: z.object({
|
|
16
|
+
channel: channelSchema.describe('The deleted channel'),
|
|
17
|
+
}),
|
|
18
|
+
handle: async (params) => {
|
|
19
|
+
const data = await discordApi(`/channels/${params.channel}`, {
|
|
20
|
+
method: 'DELETE',
|
|
21
|
+
});
|
|
22
|
+
return { channel: mapChannel(data) };
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=delete-channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-channel.js","sourceRoot":"","sources":["../../src/tools/delete-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;IACtC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,0EAA0E;IACvF,OAAO,EAAE,8BAA8B;IACvC,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KAC5D,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC;KACvD,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,UAAU,CAA0B,aAAa,MAAM,CAAC,OAAO,EAAE,EAAE;YACpF,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACvC,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const deleteMessage: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
channel: z.ZodString;
|
|
4
|
+
message_id: z.ZodString;
|
|
5
|
+
}, z.core.$strip>, z.ZodObject<{}, z.core.$strip>>;
|
|
6
|
+
//# sourceMappingURL=delete-message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-message.d.ts","sourceRoot":"","sources":["../../src/tools/delete-message.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,aAAa;;;kDAkBxB,CAAC"}
|