@buape/carbon 0.6.0 → 0.7.0
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/package.json +6 -6
- package/dist/src/abstracts/BaseCommand.d.ts +6 -3
- package/dist/src/abstracts/BaseCommand.d.ts.map +1 -1
- package/dist/src/abstracts/BaseCommand.js +17 -4
- package/dist/src/abstracts/BaseCommand.js.map +1 -1
- package/dist/src/abstracts/Plugin.d.ts +32 -1
- package/dist/src/abstracts/Plugin.d.ts.map +1 -1
- package/dist/src/abstracts/Plugin.js +3 -1
- package/dist/src/abstracts/Plugin.js.map +1 -1
- package/dist/src/adapters/bun/index.d.ts +8 -12
- package/dist/src/adapters/bun/index.d.ts.map +1 -1
- package/dist/src/adapters/bun/index.js +9 -13
- package/dist/src/adapters/bun/index.js.map +1 -1
- package/dist/src/adapters/fetch/index.d.ts +10 -0
- package/dist/src/adapters/fetch/index.d.ts.map +1 -0
- package/dist/src/adapters/fetch/index.js +45 -0
- package/dist/src/adapters/fetch/index.js.map +1 -0
- package/dist/src/adapters/node/index.d.ts +8 -12
- package/dist/src/adapters/node/index.d.ts.map +1 -1
- package/dist/src/adapters/node/index.js +10 -13
- package/dist/src/adapters/node/index.js.map +1 -1
- package/dist/src/classes/Client.d.ts +43 -13
- package/dist/src/classes/Client.d.ts.map +1 -1
- package/dist/src/classes/Client.js +63 -17
- package/dist/src/classes/Client.js.map +1 -1
- package/dist/src/classes/Listener.d.ts +8 -0
- package/dist/src/classes/Listener.d.ts.map +1 -0
- package/dist/src/classes/Listener.js +3 -0
- package/dist/src/classes/Listener.js.map +1 -0
- package/dist/src/createHandle.js +1 -1
- package/dist/src/createHandle.js.map +1 -1
- package/dist/src/index.d.ts +57 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +9 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/internals/EventHandler.d.ts +9 -0
- package/dist/src/internals/EventHandler.d.ts.map +1 -0
- package/dist/src/internals/EventHandler.js +16 -0
- package/dist/src/internals/EventHandler.js.map +1 -0
- package/dist/src/plugins/linked-roles/LinkedRoles.d.ts +31 -23
- package/dist/src/plugins/linked-roles/LinkedRoles.d.ts.map +1 -1
- package/dist/src/plugins/linked-roles/LinkedRoles.js +41 -27
- package/dist/src/plugins/linked-roles/LinkedRoles.js.map +1 -1
- package/dist/src/types/messagePayload.d.ts +37 -0
- package/dist/src/types/messagePayload.d.ts.map +1 -0
- package/dist/src/types/messagePayload.js +2 -0
- package/dist/src/types/messagePayload.js.map +1 -0
- package/dist/src/types.d.ts +2 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils.d.ts +6 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +1 -0
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { RequestClient } from "@buape/carbon-request";
|
|
2
|
-
import { InteractionResponseType, InteractionType, Routes } from "discord-api-types/v10";
|
|
3
|
-
import { Plugin } from "../abstracts/Plugin.js";
|
|
2
|
+
import { ApplicationWebhookType, InteractionResponseType, InteractionType, Routes } from "discord-api-types/v10";
|
|
4
3
|
import { channelFactory } from "../factories/channelFactory.js";
|
|
5
4
|
import { CommandHandler } from "../internals/CommandHandler.js";
|
|
6
5
|
import { ComponentHandler } from "../internals/ComponentHandler.js";
|
|
6
|
+
import { EventHandler } from "../internals/EventHandler.js";
|
|
7
7
|
import { ModalHandler } from "../internals/ModalHandler.js";
|
|
8
8
|
import { Guild } from "../structures/Guild.js";
|
|
9
9
|
import { GuildMember } from "../structures/GuildMember.js";
|
|
@@ -13,7 +13,15 @@ import { concatUint8Arrays, subtleCrypto, valueToUint8Array } from "../utils.js"
|
|
|
13
13
|
/**
|
|
14
14
|
* The main client used to interact with Discord
|
|
15
15
|
*/
|
|
16
|
-
export class Client
|
|
16
|
+
export class Client {
|
|
17
|
+
/**
|
|
18
|
+
* The routes that the client will handle
|
|
19
|
+
*/
|
|
20
|
+
routes = [];
|
|
21
|
+
/**
|
|
22
|
+
* The plugins that the client has registered
|
|
23
|
+
*/
|
|
24
|
+
plugins = [];
|
|
17
25
|
/**
|
|
18
26
|
* The options used to initialize the client
|
|
19
27
|
*/
|
|
@@ -22,6 +30,10 @@ export class Client extends Plugin {
|
|
|
22
30
|
* The commands that the client has registered
|
|
23
31
|
*/
|
|
24
32
|
commands;
|
|
33
|
+
/**
|
|
34
|
+
* The event listeners that the client has registered
|
|
35
|
+
*/
|
|
36
|
+
listeners = [];
|
|
25
37
|
/**
|
|
26
38
|
* The rest client used to interact with the Discord API
|
|
27
39
|
*/
|
|
@@ -41,39 +53,51 @@ export class Client extends Plugin {
|
|
|
41
53
|
* @internal
|
|
42
54
|
*/
|
|
43
55
|
modalHandler;
|
|
56
|
+
/**
|
|
57
|
+
* The handler for events sent from Discord
|
|
58
|
+
* @internal
|
|
59
|
+
*/
|
|
60
|
+
eventHandler;
|
|
44
61
|
/**
|
|
45
62
|
* Creates a new client
|
|
46
63
|
* @param options The options used to initialize the client
|
|
47
64
|
* @param commands The commands that the client has registered
|
|
65
|
+
* @param plugins The plugins that the client should use
|
|
48
66
|
*/
|
|
49
|
-
constructor(options,
|
|
50
|
-
super();
|
|
51
|
-
if (!options.baseUrl)
|
|
52
|
-
throw new Error("Missing base URL");
|
|
53
|
-
if (!options.clientSecret)
|
|
54
|
-
throw new Error("Missing client secret");
|
|
67
|
+
constructor(options, handlers, plugins = []) {
|
|
55
68
|
if (!options.clientId)
|
|
56
69
|
throw new Error("Missing client ID");
|
|
57
70
|
if (!options.publicKey)
|
|
58
71
|
throw new Error("Missing public key");
|
|
59
72
|
if (!options.token)
|
|
60
73
|
throw new Error("Missing token");
|
|
74
|
+
if (!options.deploySecret && !options.disableDeployRoute)
|
|
75
|
+
throw new Error("Missing deploy secret");
|
|
61
76
|
this.options = options;
|
|
62
|
-
this.commands = commands;
|
|
63
|
-
this.
|
|
77
|
+
this.commands = handlers.commands ?? [];
|
|
78
|
+
this.listeners = handlers.listeners ?? [];
|
|
79
|
+
// Remove trailing slashes from the base URL
|
|
80
|
+
options.baseUrl = options.baseUrl.replace(/\/+$/, "");
|
|
64
81
|
this.commandHandler = new CommandHandler(this);
|
|
65
82
|
this.componentHandler = new ComponentHandler(this);
|
|
66
83
|
this.modalHandler = new ModalHandler(this);
|
|
84
|
+
this.eventHandler = new EventHandler(this);
|
|
67
85
|
this.rest = new RequestClient(options.token, options.requestOptions);
|
|
68
|
-
|
|
69
|
-
|
|
86
|
+
this.appendRoutes();
|
|
87
|
+
for (const plugin of plugins) {
|
|
88
|
+
plugin.registerClient?.(this);
|
|
89
|
+
plugin.registerRoutes?.(this);
|
|
90
|
+
this.plugins.push(plugin);
|
|
91
|
+
}
|
|
92
|
+
if (!options.disableAutoRegister) {
|
|
93
|
+
for (const command of this.commands) {
|
|
70
94
|
for (const component of command.components)
|
|
71
95
|
this.componentHandler.registerComponent(new component());
|
|
72
96
|
for (const modal of command.modals)
|
|
73
97
|
this.modalHandler.registerModal(new modal());
|
|
74
98
|
}
|
|
75
99
|
}
|
|
76
|
-
if (
|
|
100
|
+
if (options.autoDeploy) {
|
|
77
101
|
this.handleDeployRequest();
|
|
78
102
|
}
|
|
79
103
|
}
|
|
@@ -91,6 +115,12 @@ export class Client extends Plugin {
|
|
|
91
115
|
handler: this.handleInteractionsRequest.bind(this),
|
|
92
116
|
disabled: this.options.disableInteractionsRoute
|
|
93
117
|
});
|
|
118
|
+
this.routes.push({
|
|
119
|
+
method: "POST",
|
|
120
|
+
path: "/events",
|
|
121
|
+
handler: this.handleEventsRequest.bind(this),
|
|
122
|
+
disabled: this.options.disableEventsRoute
|
|
123
|
+
});
|
|
94
124
|
}
|
|
95
125
|
/**
|
|
96
126
|
* Handle a request to deploy the commands to Discord
|
|
@@ -104,6 +134,22 @@ export class Client extends Plugin {
|
|
|
104
134
|
{ body: commands });
|
|
105
135
|
return new Response("OK", { status: 202 });
|
|
106
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Handle an interaction request from Discord
|
|
139
|
+
* @param req The request to handle
|
|
140
|
+
* @returns A response
|
|
141
|
+
*/
|
|
142
|
+
async handleEventsRequest(req) {
|
|
143
|
+
const isValid = await this.validateDiscordRequest(req);
|
|
144
|
+
if (!isValid)
|
|
145
|
+
return new Response("Unauthorized", { status: 401 });
|
|
146
|
+
const payload = (await req.json());
|
|
147
|
+
// All ping webhooks should respond with 204 and an empty body
|
|
148
|
+
if (payload.type === ApplicationWebhookType.Ping)
|
|
149
|
+
return new Response(null, { status: 204 });
|
|
150
|
+
this.eventHandler.handleEvent(payload); // Events will never return anything to Discord
|
|
151
|
+
return new Response(null, { status: 204 });
|
|
152
|
+
}
|
|
107
153
|
/**
|
|
108
154
|
* Handle an interaction request from Discord
|
|
109
155
|
* @param req The request to handle
|
|
@@ -111,7 +157,7 @@ export class Client extends Plugin {
|
|
|
111
157
|
* @returns A response
|
|
112
158
|
*/
|
|
113
159
|
async handleInteractionsRequest(req, ctx) {
|
|
114
|
-
const isValid = await this.
|
|
160
|
+
const isValid = await this.validateDiscordRequest(req);
|
|
115
161
|
if (!isValid)
|
|
116
162
|
return new Response("Unauthorized", { status: 401 });
|
|
117
163
|
const interaction = (await req.json());
|
|
@@ -149,10 +195,10 @@ export class Client extends Plugin {
|
|
|
149
195
|
return new Response("OK", { status: 202 });
|
|
150
196
|
}
|
|
151
197
|
/**
|
|
152
|
-
* Validate
|
|
198
|
+
* Validate a request from Discord
|
|
153
199
|
* @param req The request to validate
|
|
154
200
|
*/
|
|
155
|
-
async
|
|
201
|
+
async validateDiscordRequest(req) {
|
|
156
202
|
const body = await req.clone().text();
|
|
157
203
|
const signature = req.headers.get("X-Signature-Ed25519");
|
|
158
204
|
const timestamp = req.headers.get("X-Signature-Timestamp");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../../src/classes/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA6B,MAAM,uBAAuB,CAAA;AAChF,OAAO,
|
|
1
|
+
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../../src/classes/Client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { APIWebhookEventApplicationAuthorizedData, APIWebhookEventEntitlementCreateData, ApplicationWebhookEventType } from "discord-api-types/v10";
|
|
2
|
+
import type { Client } from "./Client.js";
|
|
3
|
+
export type ListenerEventData<T extends ApplicationWebhookEventType> = T extends ApplicationWebhookEventType.ApplicationAuthorized ? APIWebhookEventApplicationAuthorizedData : T extends ApplicationWebhookEventType.EntitlementCreate ? APIWebhookEventEntitlementCreateData : never;
|
|
4
|
+
export declare abstract class Listener {
|
|
5
|
+
abstract type: ApplicationWebhookEventType;
|
|
6
|
+
abstract handle(data: ListenerEventData<typeof this.type>, client: Client): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=Listener.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Listener.d.ts","sourceRoot":"","sources":["../../../src/classes/Listener.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,wCAAwC,EACxC,oCAAoC,EACpC,2BAA2B,EAC3B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,2BAA2B,IAClE,CAAC,SAAS,2BAA2B,CAAC,qBAAqB,GACxD,wCAAwC,GACxC,CAAC,SAAS,2BAA2B,CAAC,iBAAiB,GACtD,oCAAoC,GACpC,KAAK,CAAA;AAEV,8BAAsB,QAAQ;IAC7B,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAA;IAC1C,QAAQ,CAAC,MAAM,CACd,IAAI,EAAE,iBAAiB,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,EACzC,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Listener.js","sourceRoot":"","sources":["../../../src/classes/Listener.ts"],"names":[],"mappings":"AAcA,MAAM,OAAgB,QAAQ;CAM7B"}
|
package/dist/src/createHandle.js
CHANGED
|
@@ -17,7 +17,7 @@ export function createHandle(factory) {
|
|
|
17
17
|
const routes = [client, ...plugins].flatMap((plugin) => plugin.routes);
|
|
18
18
|
return async (req, ctx) => {
|
|
19
19
|
const method = req.method;
|
|
20
|
-
const url = new URL(req.url);
|
|
20
|
+
const url = new URL(req.url, "http://localhost");
|
|
21
21
|
const pathname = //
|
|
22
22
|
resolveRequestPathname(new URL(client.options.baseUrl), url);
|
|
23
23
|
if (!pathname)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createHandle.js","sourceRoot":"","sources":["../../src/createHandle.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAC3B,OAA4C;IAE5C,OAAO,CAAC,GAAQ,EAAE,EAAE;QACnB,MAAM,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;QACzC,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAEtE,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;YAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAA;YACzB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"createHandle.js","sourceRoot":"","sources":["../../src/createHandle.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export * from "./createHandle.js";
|
|
2
1
|
export * from "./abstracts/AnySelectMenu.js";
|
|
3
2
|
export * from "./abstracts/AnySelectMenuInteraction.js";
|
|
4
3
|
export * from "./abstracts/Base.js";
|
|
@@ -10,6 +9,7 @@ export * from "./abstracts/BaseGuildChannel.js";
|
|
|
10
9
|
export * from "./abstracts/BaseGuildTextChannel.js";
|
|
11
10
|
export * from "./abstracts/BaseInteraction.js";
|
|
12
11
|
export * from "./abstracts/GuildThreadOnlyChannel.js";
|
|
12
|
+
export * from "./abstracts/Plugin.js";
|
|
13
13
|
export * from "./classes/Button.js";
|
|
14
14
|
export * from "./classes/ChannelSelectMenu.js";
|
|
15
15
|
export * from "./classes/Client.js";
|
|
@@ -17,6 +17,7 @@ export * from "./classes/Command.js";
|
|
|
17
17
|
export * from "./classes/CommandWithSubcommandGroups.js";
|
|
18
18
|
export * from "./classes/CommandWithSubcommands.js";
|
|
19
19
|
export * from "./classes/Embed.js";
|
|
20
|
+
export * from "./classes/Listener.js";
|
|
20
21
|
export * from "./classes/MentionableSelectMenu.js";
|
|
21
22
|
export * from "./classes/Modal.js";
|
|
22
23
|
export * from "./classes/RoleSelectMenu.js";
|
|
@@ -31,6 +32,7 @@ export * from "./internals/ChannelSelectMenuInteraction.js";
|
|
|
31
32
|
export * from "./internals/CommandHandler.js";
|
|
32
33
|
export * from "./internals/CommandInteraction.js";
|
|
33
34
|
export * from "./internals/ComponentHandler.js";
|
|
35
|
+
export * from "./internals/FieldsHandler.js";
|
|
34
36
|
export * from "./internals/MentionableSelectMenuInteraction.js";
|
|
35
37
|
export * from "./internals/ModalHandler.js";
|
|
36
38
|
export * from "./internals/ModalInteraction.js";
|
|
@@ -53,4 +55,58 @@ export * from "./structures/Message.js";
|
|
|
53
55
|
export * from "./structures/Role.js";
|
|
54
56
|
export * from "./structures/User.js";
|
|
55
57
|
export * from "discord-api-types/v10";
|
|
58
|
+
export * from "./types.js";
|
|
59
|
+
export * from "./utils.js";
|
|
60
|
+
export declare const Permission: {
|
|
61
|
+
readonly CreateInstantInvite: bigint;
|
|
62
|
+
readonly KickMembers: bigint;
|
|
63
|
+
readonly BanMembers: bigint;
|
|
64
|
+
readonly Administrator: bigint;
|
|
65
|
+
readonly ManageChannels: bigint;
|
|
66
|
+
readonly ManageGuild: bigint;
|
|
67
|
+
readonly AddReactions: bigint;
|
|
68
|
+
readonly ViewAuditLog: bigint;
|
|
69
|
+
readonly PrioritySpeaker: bigint;
|
|
70
|
+
readonly Stream: bigint;
|
|
71
|
+
readonly ViewChannel: bigint;
|
|
72
|
+
readonly SendMessages: bigint;
|
|
73
|
+
readonly SendTTSMessages: bigint;
|
|
74
|
+
readonly ManageMessages: bigint;
|
|
75
|
+
readonly EmbedLinks: bigint;
|
|
76
|
+
readonly AttachFiles: bigint;
|
|
77
|
+
readonly ReadMessageHistory: bigint;
|
|
78
|
+
readonly MentionEveryone: bigint;
|
|
79
|
+
readonly UseExternalEmojis: bigint;
|
|
80
|
+
readonly ViewGuildInsights: bigint;
|
|
81
|
+
readonly Connect: bigint;
|
|
82
|
+
readonly Speak: bigint;
|
|
83
|
+
readonly MuteMembers: bigint;
|
|
84
|
+
readonly DeafenMembers: bigint;
|
|
85
|
+
readonly MoveMembers: bigint;
|
|
86
|
+
readonly UseVAD: bigint;
|
|
87
|
+
readonly ChangeNickname: bigint;
|
|
88
|
+
readonly ManageNicknames: bigint;
|
|
89
|
+
readonly ManageRoles: bigint;
|
|
90
|
+
readonly ManageWebhooks: bigint;
|
|
91
|
+
readonly ManageEmojisAndStickers: bigint;
|
|
92
|
+
readonly ManageGuildExpressions: bigint;
|
|
93
|
+
readonly UseApplicationCommands: bigint;
|
|
94
|
+
readonly RequestToSpeak: bigint;
|
|
95
|
+
readonly ManageEvents: bigint;
|
|
96
|
+
readonly ManageThreads: bigint;
|
|
97
|
+
readonly CreatePublicThreads: bigint;
|
|
98
|
+
readonly CreatePrivateThreads: bigint;
|
|
99
|
+
readonly UseExternalStickers: bigint;
|
|
100
|
+
readonly SendMessagesInThreads: bigint;
|
|
101
|
+
readonly UseEmbeddedActivities: bigint;
|
|
102
|
+
readonly ModerateMembers: bigint;
|
|
103
|
+
readonly ViewCreatorMonetizationAnalytics: bigint;
|
|
104
|
+
readonly UseSoundboard: bigint;
|
|
105
|
+
readonly CreateGuildExpressions: bigint;
|
|
106
|
+
readonly CreateEvents: bigint;
|
|
107
|
+
readonly UseExternalSounds: bigint;
|
|
108
|
+
readonly SendVoiceMessages: bigint;
|
|
109
|
+
readonly SendPolls: bigint;
|
|
110
|
+
readonly UseExternalApps: bigint;
|
|
111
|
+
};
|
|
56
112
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yCAAyC,CAAA;AACvD,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yCAAyC,CAAA;AACvD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,qCAAqC,CAAA;AACnD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,uCAAuC,CAAA;AACrD,cAAc,uBAAuB,CAAA;AAGrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0CAA0C,CAAA;AACxD,cAAc,qCAAqC,CAAA;AACnD,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oCAAoC,CAAA;AAClD,cAAc,oBAAoB,CAAA;AAClC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,wBAAwB,CAAA;AACtC,cAAc,6BAA6B,CAAA;AAG3C,cAAc,+BAA+B,CAAA;AAG7C,cAAc,wCAAwC,CAAA;AACtD,cAAc,kCAAkC,CAAA;AAChD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iDAAiD,CAAA;AAC/D,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0CAA0C,CAAA;AACxD,cAAc,4CAA4C,CAAA;AAC1D,cAAc,0CAA0C,CAAA;AAGxD,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,uBAAuB,CAAA;AACrC,cAAc,0CAA0C,CAAA;AACxD,cAAc,sCAAsC,CAAA;AACpD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0CAA0C,CAAA;AACxD,cAAc,kCAAkC,CAAA;AAChD,cAAc,oCAAoC,CAAA;AAClD,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AAGpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAI1B,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAsB,CAAA"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export * from "./createHandle.js";
|
|
2
1
|
// ----- Abstracts -----
|
|
3
2
|
export * from "./abstracts/AnySelectMenu.js";
|
|
4
3
|
export * from "./abstracts/AnySelectMenuInteraction.js";
|
|
@@ -11,6 +10,7 @@ export * from "./abstracts/BaseGuildChannel.js";
|
|
|
11
10
|
export * from "./abstracts/BaseGuildTextChannel.js";
|
|
12
11
|
export * from "./abstracts/BaseInteraction.js";
|
|
13
12
|
export * from "./abstracts/GuildThreadOnlyChannel.js";
|
|
13
|
+
export * from "./abstracts/Plugin.js";
|
|
14
14
|
// ----- Classes -----
|
|
15
15
|
export * from "./classes/Button.js";
|
|
16
16
|
export * from "./classes/ChannelSelectMenu.js";
|
|
@@ -19,6 +19,7 @@ export * from "./classes/Command.js";
|
|
|
19
19
|
export * from "./classes/CommandWithSubcommandGroups.js";
|
|
20
20
|
export * from "./classes/CommandWithSubcommands.js";
|
|
21
21
|
export * from "./classes/Embed.js";
|
|
22
|
+
export * from "./classes/Listener.js";
|
|
22
23
|
export * from "./classes/MentionableSelectMenu.js";
|
|
23
24
|
export * from "./classes/Modal.js";
|
|
24
25
|
export * from "./classes/RoleSelectMenu.js";
|
|
@@ -35,6 +36,7 @@ export * from "./internals/ChannelSelectMenuInteraction.js";
|
|
|
35
36
|
export * from "./internals/CommandHandler.js";
|
|
36
37
|
export * from "./internals/CommandInteraction.js";
|
|
37
38
|
export * from "./internals/ComponentHandler.js";
|
|
39
|
+
export * from "./internals/FieldsHandler.js";
|
|
38
40
|
export * from "./internals/MentionableSelectMenuInteraction.js";
|
|
39
41
|
export * from "./internals/ModalHandler.js";
|
|
40
42
|
export * from "./internals/ModalInteraction.js";
|
|
@@ -57,6 +59,11 @@ export * from "./structures/GuildThreadChannel.js";
|
|
|
57
59
|
export * from "./structures/Message.js";
|
|
58
60
|
export * from "./structures/Role.js";
|
|
59
61
|
export * from "./structures/User.js";
|
|
60
|
-
// -----
|
|
62
|
+
// ----- Misc -----
|
|
61
63
|
export * from "discord-api-types/v10";
|
|
64
|
+
export * from "./types.js";
|
|
65
|
+
export * from "./utils.js";
|
|
66
|
+
// ----- Re-exports -----
|
|
67
|
+
import { PermissionFlagsBits } from "discord-api-types/v10";
|
|
68
|
+
export const Permission = PermissionFlagsBits;
|
|
62
69
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yCAAyC,CAAA;AACvD,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yCAAyC,CAAA;AACvD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,qCAAqC,CAAA;AACnD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,uCAAuC,CAAA;AACrD,cAAc,uBAAuB,CAAA;AAErC,sBAAsB;AACtB,cAAc,qBAAqB,CAAA;AACnC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0CAA0C,CAAA;AACxD,cAAc,qCAAqC,CAAA;AACnD,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oCAAoC,CAAA;AAClD,cAAc,oBAAoB,CAAA;AAClC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,wBAAwB,CAAA;AACtC,cAAc,6BAA6B,CAAA;AAE3C,wBAAwB;AACxB,cAAc,+BAA+B,CAAA;AAE7C,wBAAwB;AACxB,cAAc,wCAAwC,CAAA;AACtD,cAAc,kCAAkC,CAAA;AAChD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iDAAiD,CAAA;AAC/D,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0CAA0C,CAAA;AACxD,cAAc,4CAA4C,CAAA;AAC1D,cAAc,0CAA0C,CAAA;AAExD,yBAAyB;AACzB,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,uBAAuB,CAAA;AACrC,cAAc,0CAA0C,CAAA;AACxD,cAAc,sCAAsC,CAAA;AACpD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0CAA0C,CAAA;AACxD,cAAc,kCAAkC,CAAA;AAChD,cAAc,oCAAoC,CAAA;AAClD,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AAEpC,mBAAmB;AACnB,cAAc,uBAAuB,CAAA;AACrC,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAE1B,yBAAyB;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,MAAM,CAAC,MAAM,UAAU,GAAG,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type APIWebhookEvent } from "discord-api-types/v10";
|
|
2
|
+
import { Base } from "../abstracts/Base.js";
|
|
3
|
+
import type { Listener } from "../classes/Listener.js";
|
|
4
|
+
export declare class EventHandler extends Base {
|
|
5
|
+
listeners: Listener[];
|
|
6
|
+
registerListener(listener: (typeof this.listeners)[number]): void;
|
|
7
|
+
handleEvent(payload: APIWebhookEvent): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=EventHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventHandler.d.ts","sourceRoot":"","sources":["../../../src/internals/EventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,eAAe,EAEpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEtD,qBAAa,YAAa,SAAQ,IAAI;IACrC,SAAS,EAAE,QAAQ,EAAE,CAAK;IAE1B,gBAAgB,CAAC,QAAQ,EAAE,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;IAIpD,WAAW,CAAC,OAAO,EAAE,eAAe;CAK1C"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ApplicationWebhookType } from "discord-api-types/v10";
|
|
2
|
+
import { Base } from "../abstracts/Base.js";
|
|
3
|
+
export class EventHandler extends Base {
|
|
4
|
+
listeners = [];
|
|
5
|
+
registerListener(listener) {
|
|
6
|
+
this.listeners.push(listener);
|
|
7
|
+
}
|
|
8
|
+
async handleEvent(payload) {
|
|
9
|
+
if (payload.type !== ApplicationWebhookType.Event)
|
|
10
|
+
return;
|
|
11
|
+
const listener = this.listeners.find((x) => x.type === payload.event.type);
|
|
12
|
+
if (listener)
|
|
13
|
+
return await listener.handle(payload.event.data, this.client);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=EventHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventHandler.js","sourceRoot":"","sources":["../../../src/internals/EventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,sBAAsB,EACtB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAG3C,MAAM,OAAO,YAAa,SAAQ,IAAI;IACrC,SAAS,GAAe,EAAE,CAAA;IAE1B,gBAAgB,CAAC,QAAyC;QACzD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAwB;QACzC,IAAI,OAAO,CAAC,IAAI,KAAK,sBAAsB,CAAC,KAAK;YAAE,OAAM;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC1E,IAAI,QAAQ;YAAE,OAAO,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAC5E,CAAC;CACD"}
|
|
@@ -1,42 +1,50 @@
|
|
|
1
1
|
import { Plugin } from "../../abstracts/Plugin.js";
|
|
2
2
|
import type { Client } from "../../classes/Client.js";
|
|
3
3
|
import { type LinkedRolesOptions } from "./types.js";
|
|
4
|
+
declare module "../../classes/Client.d.ts" {
|
|
5
|
+
interface ClientOptions {
|
|
6
|
+
/**
|
|
7
|
+
* The client secret of the app, used for OAuth
|
|
8
|
+
*/
|
|
9
|
+
clientSecret: string;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
4
12
|
/**
|
|
5
13
|
* This class is the main class that is used for the linked roles feature of Carbon.
|
|
6
14
|
* It handles all the additional routes and oauth.
|
|
7
15
|
*
|
|
8
16
|
* @example
|
|
9
17
|
* ```ts
|
|
10
|
-
* import {
|
|
18
|
+
* import { Client, ApplicationRoleConnectionMetadataType } from "@buape/carbon"
|
|
11
19
|
* import { LinkedRoles } from "@buape/carbon/linked-roles"
|
|
12
20
|
*
|
|
13
|
-
* const
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* }
|
|
29
|
-
* }
|
|
30
|
-
* })
|
|
31
|
-
* return [client, linkedRoles]
|
|
21
|
+
* const linkedRoles = new LinkedRoles({
|
|
22
|
+
* metadata: [
|
|
23
|
+
* {
|
|
24
|
+
* key: "is_staff",
|
|
25
|
+
* name: "Verified Staff",
|
|
26
|
+
* description: "Whether the user is a verified staff member",
|
|
27
|
+
* type: ApplicationRoleConnectionMetadataType.BooleanEqual
|
|
28
|
+
* }
|
|
29
|
+
* ],
|
|
30
|
+
* metadataCheckers: {
|
|
31
|
+
* is_staff: async (userId) => {
|
|
32
|
+
* const allStaff = ["439223656200273932"]
|
|
33
|
+
* return allStaff.includes(userId)
|
|
34
|
+
* }
|
|
35
|
+
* }
|
|
32
36
|
* })
|
|
37
|
+
*
|
|
38
|
+
* const client = new Client({ ... }, [ ... ], [linkedRoles])
|
|
33
39
|
* ```
|
|
34
40
|
*/
|
|
35
41
|
export declare class LinkedRoles extends Plugin {
|
|
36
|
-
client
|
|
42
|
+
client?: Client;
|
|
37
43
|
options: LinkedRolesOptions;
|
|
38
|
-
constructor(
|
|
39
|
-
|
|
44
|
+
constructor(options: LinkedRolesOptions);
|
|
45
|
+
registerClient(client: Client): void;
|
|
46
|
+
registerRoutes(client: Client): void;
|
|
47
|
+
private assertRegistered;
|
|
40
48
|
/**
|
|
41
49
|
* Handle a request to deploy the linked roles to Discord
|
|
42
50
|
* @returns A response
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkedRoles.d.ts","sourceRoot":"","sources":["../../../../src/plugins/linked-roles/LinkedRoles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAEN,KAAK,kBAAkB,EACvB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"LinkedRoles.d.ts","sourceRoot":"","sources":["../../../../src/plugins/linked-roles/LinkedRoles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAEN,KAAK,kBAAkB,EACvB,MAAM,YAAY,CAAA;AAUnB,OAAO,QAAQ,2BAA2B,CAAC;IAC1C,UAAU,aAAa;QACtB;;WAEG;QACH,YAAY,EAAE,MAAM,CAAA;KACpB;CACD;AAOD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,WAAY,SAAQ,MAAM;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,kBAAkB,CAAA;gBAEf,OAAO,EAAE,kBAAkB;IAKhC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQpC,cAAc,CAAC,MAAM,EAAE,MAAM;IAsBpC,OAAO,CAAC,gBAAgB;IAIxB;;;OAGG;IACU,mBAAmB;IAKhC;;;OAGG;IACU,6BAA6B;IAU1C;;;;OAIG;IACU,qCAAqC,CAAC,GAAG,EAAE,OAAO;YA8BjD,uBAAuB;YAiCvB,cAAc;YA8Bd,cAAc;YAyBd,WAAW;CAsBzB"}
|
|
@@ -10,61 +10,70 @@ import { ApplicationRoleConnectionMetadataType } from "./types.js";
|
|
|
10
10
|
*
|
|
11
11
|
* @example
|
|
12
12
|
* ```ts
|
|
13
|
-
* import {
|
|
13
|
+
* import { Client, ApplicationRoleConnectionMetadataType } from "@buape/carbon"
|
|
14
14
|
* import { LinkedRoles } from "@buape/carbon/linked-roles"
|
|
15
15
|
*
|
|
16
|
-
* const
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* }
|
|
32
|
-
* }
|
|
33
|
-
* })
|
|
34
|
-
* return [client, linkedRoles]
|
|
16
|
+
* const linkedRoles = new LinkedRoles({
|
|
17
|
+
* metadata: [
|
|
18
|
+
* {
|
|
19
|
+
* key: "is_staff",
|
|
20
|
+
* name: "Verified Staff",
|
|
21
|
+
* description: "Whether the user is a verified staff member",
|
|
22
|
+
* type: ApplicationRoleConnectionMetadataType.BooleanEqual
|
|
23
|
+
* }
|
|
24
|
+
* ],
|
|
25
|
+
* metadataCheckers: {
|
|
26
|
+
* is_staff: async (userId) => {
|
|
27
|
+
* const allStaff = ["439223656200273932"]
|
|
28
|
+
* return allStaff.includes(userId)
|
|
29
|
+
* }
|
|
30
|
+
* }
|
|
35
31
|
* })
|
|
32
|
+
*
|
|
33
|
+
* const client = new Client({ ... }, [ ... ], [linkedRoles])
|
|
36
34
|
* ```
|
|
37
35
|
*/
|
|
38
36
|
export class LinkedRoles extends Plugin {
|
|
39
37
|
client;
|
|
40
38
|
options;
|
|
41
|
-
constructor(
|
|
39
|
+
constructor(options) {
|
|
42
40
|
super();
|
|
43
|
-
this.client = client;
|
|
44
41
|
this.options = { ...options };
|
|
45
|
-
this.appendRoutes();
|
|
46
42
|
}
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
registerClient(client) {
|
|
44
|
+
if (!client.options.baseUrl)
|
|
45
|
+
throw new Error("Missing base URL");
|
|
46
|
+
if (!client.options.clientSecret)
|
|
47
|
+
throw new Error("Missing client secret");
|
|
48
|
+
if (!client.options.deploySecret && !this.options.disableDeployRoute)
|
|
49
|
+
throw new Error("Missing deploy secret");
|
|
50
|
+
this.client = client;
|
|
51
|
+
}
|
|
52
|
+
registerRoutes(client) {
|
|
53
|
+
client.routes.push({
|
|
49
54
|
method: "GET",
|
|
50
55
|
path: "/linked-roles/deploy",
|
|
51
56
|
handler: this.handleDeployRequest.bind(this),
|
|
52
57
|
protected: true,
|
|
53
58
|
disabled: this.options.disableDeployRoute
|
|
54
59
|
});
|
|
55
|
-
|
|
60
|
+
client.routes.push({
|
|
56
61
|
method: "GET",
|
|
57
62
|
path: "/linked-roles/verify-user",
|
|
58
63
|
handler: this.handleUserVerificationRequest.bind(this),
|
|
59
64
|
disabled: this.options.disableVerifyUserRoute
|
|
60
65
|
});
|
|
61
|
-
|
|
66
|
+
client.routes.push({
|
|
62
67
|
method: "GET",
|
|
63
68
|
path: "/linked-roles/verify-user/callback",
|
|
64
69
|
handler: this.handleUserVerificationCallbackRequest.bind(this),
|
|
65
70
|
disabled: this.options.disableVerifyUserCallbackRoute
|
|
66
71
|
});
|
|
67
72
|
}
|
|
73
|
+
assertRegistered() {
|
|
74
|
+
if (!this.client)
|
|
75
|
+
throw new Error("Client not registered");
|
|
76
|
+
}
|
|
68
77
|
/**
|
|
69
78
|
* Handle a request to deploy the linked roles to Discord
|
|
70
79
|
* @returns A response
|
|
@@ -78,6 +87,7 @@ export class LinkedRoles extends Plugin {
|
|
|
78
87
|
* @returns A response
|
|
79
88
|
*/
|
|
80
89
|
async handleUserVerificationRequest() {
|
|
90
|
+
this.assertRegistered();
|
|
81
91
|
return new Response("Found", {
|
|
82
92
|
status: 302,
|
|
83
93
|
headers: {
|
|
@@ -91,6 +101,7 @@ export class LinkedRoles extends Plugin {
|
|
|
91
101
|
* @returns A response
|
|
92
102
|
*/
|
|
93
103
|
async handleUserVerificationCallbackRequest(req) {
|
|
104
|
+
this.assertRegistered();
|
|
94
105
|
const url = new URL(req.url);
|
|
95
106
|
const code = String(url.searchParams.get("code"));
|
|
96
107
|
const tokens = await this.getOAuthTokens(code);
|
|
@@ -144,6 +155,7 @@ export class LinkedRoles extends Plugin {
|
|
|
144
155
|
return result;
|
|
145
156
|
}
|
|
146
157
|
async getOAuthTokens(code) {
|
|
158
|
+
this.assertRegistered();
|
|
147
159
|
const url = "https://discord.com/api/v10/oauth2/token";
|
|
148
160
|
const body = new URLSearchParams({
|
|
149
161
|
client_id: this.client.options.clientId,
|
|
@@ -166,6 +178,7 @@ export class LinkedRoles extends Plugin {
|
|
|
166
178
|
throw new Error(`Error fetching OAuth tokens: [${response.status}] ${JSON.stringify(await response.json())}`);
|
|
167
179
|
}
|
|
168
180
|
async updateMetadata(userId, metadata, tokens) {
|
|
181
|
+
this.assertRegistered();
|
|
169
182
|
const url = `https://discord.com/api/v10/users/@me/applications/${this.client.options.clientId}/role-connection`;
|
|
170
183
|
const response = await fetch(url, {
|
|
171
184
|
method: "PUT",
|
|
@@ -180,6 +193,7 @@ export class LinkedRoles extends Plugin {
|
|
|
180
193
|
}
|
|
181
194
|
}
|
|
182
195
|
async setMetadata(data) {
|
|
196
|
+
this.assertRegistered();
|
|
183
197
|
const response = await fetch(`https://discord.com/api/v10/applications/${this.client.options.clientId}/role-connections/metadata`, {
|
|
184
198
|
method: "PUT",
|
|
185
199
|
body: JSON.stringify(data),
|