@discordeno/rest 19.0.0-next.e19eca5 → 19.0.0-next.e2d86ea
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/invalidBucket.js +6 -6
- package/dist/invalidBucket.js.map +1 -1
- package/dist/manager.d.ts.map +1 -1
- package/dist/manager.js +17 -8
- package/dist/manager.js.map +1 -1
- package/dist/routes.js +1 -1
- package/dist/routes.js.map +1 -1
- package/dist/types.d.ts +4 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +4 -5
package/dist/invalidBucket.js
CHANGED
|
@@ -21,7 +21,7 @@ import { delay, logger } from '@discordeno/utils';
|
|
|
21
21
|
processing: false,
|
|
22
22
|
waiting: [],
|
|
23
23
|
requestsAllowed: function() {
|
|
24
|
-
if (bucket.resetAt !== undefined && Date.now()
|
|
24
|
+
if (bucket.resetAt !== undefined && Date.now() >= bucket.resetAt) {
|
|
25
25
|
bucket.invalidRequests = 0;
|
|
26
26
|
bucket.resetAt = Date.now() + bucket.interval;
|
|
27
27
|
}
|
|
@@ -45,14 +45,13 @@ import { delay, logger } from '@discordeno/utils';
|
|
|
45
45
|
},
|
|
46
46
|
processWaiting: async function() {
|
|
47
47
|
// If already processing, that loop will handle all waiting requests.
|
|
48
|
-
if (bucket.processing)
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
48
|
+
if (bucket.processing) return;
|
|
51
49
|
// Mark as processing so other loops don't start
|
|
52
50
|
bucket.processing = true;
|
|
53
51
|
while(bucket.waiting.length > 0){
|
|
54
|
-
logger.info(`[InvalidBucket] processing waiting queue while loop ran with ${bucket.waiting.length}
|
|
55
|
-
if (bucket.resetAt !== undefined
|
|
52
|
+
logger.info(`[InvalidBucket] processing waiting queue while loop ran with ${bucket.waiting.length} pending requests to be made. ${JSON.stringify(bucket)}`);
|
|
53
|
+
if (!bucket.isRequestAllowed() && bucket.resetAt !== undefined) {
|
|
54
|
+
logger.warn(`[InvalidBucket] processing waiting queue is now paused until more requests are available. ${bucket.waiting.length} pending requests. ${JSON.stringify(bucket)}`);
|
|
56
55
|
await delay(bucket.resetAt - Date.now());
|
|
57
56
|
}
|
|
58
57
|
bucket.activeRequests += 1;
|
|
@@ -74,6 +73,7 @@ import { delay, logger } from '@discordeno/utils';
|
|
|
74
73
|
bucket.resetAt = Date.now() + bucket.interval;
|
|
75
74
|
}
|
|
76
75
|
bucket.invalidRequests += 1;
|
|
76
|
+
logger.warn(`[InvalidBucket] an invalid request was made. Increasing invalidRequests count to ${bucket.invalidRequests}`);
|
|
77
77
|
}
|
|
78
78
|
};
|
|
79
79
|
return bucket;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/invalidBucket.ts"],"sourcesContent":["import { delay, logger } from '@discordeno/utils'\n\n/**\n * A invalid request bucket is used in a similar manner as a leaky bucket but a invalid request bucket can be refilled as needed.\n * It's purpose is to make sure the bot does not hit the limit to getting a 1 hr ban.\n *\n * @param options The options used to configure this bucket.\n * @returns RefillingBucket\n */\nexport function createInvalidRequestBucket(options: InvalidRequestBucketOptions): InvalidRequestBucket {\n const bucket: InvalidRequestBucket = {\n invalidRequests: options.current ?? 0,\n max: options.max ?? 10000,\n interval: options.interval ?? 600_000, // 10 minutes\n resetAt: options.resetAt,\n safety: options.safety ?? 1,\n errorStatuses: options.errorStatuses ?? [401, 403, 429],\n activeRequests: options.requested ?? 0,\n processing: false,\n\n waiting: [],\n\n requestsAllowed: function () {\n if (bucket.resetAt !== undefined && Date.now()
|
|
1
|
+
{"version":3,"sources":["../src/invalidBucket.ts"],"sourcesContent":["import { delay, logger } from '@discordeno/utils'\n\n/**\n * A invalid request bucket is used in a similar manner as a leaky bucket but a invalid request bucket can be refilled as needed.\n * It's purpose is to make sure the bot does not hit the limit to getting a 1 hr ban.\n *\n * @param options The options used to configure this bucket.\n * @returns RefillingBucket\n */\nexport function createInvalidRequestBucket(options: InvalidRequestBucketOptions): InvalidRequestBucket {\n const bucket: InvalidRequestBucket = {\n invalidRequests: options.current ?? 0,\n max: options.max ?? 10000,\n interval: options.interval ?? 600_000, // 10 minutes\n resetAt: options.resetAt,\n safety: options.safety ?? 1,\n errorStatuses: options.errorStatuses ?? [401, 403, 429],\n activeRequests: options.requested ?? 0,\n processing: false,\n\n waiting: [],\n\n requestsAllowed: function () {\n if (bucket.resetAt !== undefined && Date.now() >= bucket.resetAt) {\n bucket.invalidRequests = 0\n bucket.resetAt = Date.now() + bucket.interval\n }\n\n return bucket.max - bucket.invalidRequests - bucket.activeRequests - bucket.safety\n },\n\n isRequestAllowed: function () {\n return bucket.requestsAllowed() > 0\n },\n\n waitUntilRequestAvailable: async function () {\n // eslint-disable-next-line no-async-promise-executor\n return await new Promise(async (resolve) => {\n // If whatever amount of requests is left is more than the safety margin, allow the request\n if (bucket.isRequestAllowed()) {\n bucket.activeRequests += 1\n resolve()\n } else {\n bucket.waiting.push(resolve)\n await bucket.processWaiting()\n }\n })\n },\n\n processWaiting: async function () {\n // If already processing, that loop will handle all waiting requests.\n if (bucket.processing) return\n\n // Mark as processing so other loops don't start\n bucket.processing = true\n\n while (bucket.waiting.length > 0) {\n logger.info(`[InvalidBucket] processing waiting queue while loop ran with ${bucket.waiting.length} pending requests to be made. ${JSON.stringify(bucket)}`)\n\n if (!bucket.isRequestAllowed() && bucket.resetAt !== undefined) {\n logger.warn(`[InvalidBucket] processing waiting queue is now paused until more requests are available. ${bucket.waiting.length} pending requests. ${JSON.stringify(bucket)}`)\n await delay(bucket.resetAt - Date.now())\n }\n\n bucket.activeRequests += 1\n // Resolve the next item in the queue\n bucket.waiting.shift()?.()\n }\n\n // Mark as false so next pending request can be triggered by new loop.\n bucket.processing = false\n },\n\n handleCompletedRequest: function (code, sharedScope) {\n // Since request is complete, we can remove one from requested.\n bucket.activeRequests -= 1\n // Since it is as a valid request, we don't need to do anything\n if (!bucket.errorStatuses.includes(code)) return\n // Shared scope is not considered invalid\n if (code === 429 && sharedScope) return\n\n // INVALID REQUEST WAS MADE\n if (bucket.resetAt === undefined) {\n bucket.resetAt = Date.now() + bucket.interval\n }\n\n bucket.invalidRequests += 1\n logger.warn(`[InvalidBucket] an invalid request was made. Increasing invalidRequests count to ${bucket.invalidRequests}`)\n },\n }\n\n return bucket\n}\n\nexport interface InvalidRequestBucketOptions {\n /** current invalid amount */\n current?: number\n /** max invalid requests allowed until ban. Defaults to 10,000 */\n max?: number\n /** The time that discord allows to make the max number of invalid requests. Defaults to 10 minutes */\n interval?: number\n /** When the timeout for the bucket has started at. */\n resetAt?: number\n /** how safe to be from max. Defaults to 1 */\n safety?: number\n /** The request statuses that count as an invalid request. */\n errorStatuses?: number[]\n /** The amount of requests that were requested from this bucket. */\n requested?: number\n}\n\nexport interface InvalidRequestBucket {\n /** current invalid amount */\n invalidRequests: number\n /** max invalid requests allowed until ban. Defaults to 10,000 */\n max: number\n /** The time that discord allows to make the max number of invalid requests. Defaults to 10 minutes */\n interval: number\n /** When the timeout for this bucket has started at. */\n resetAt: number | undefined\n /** how safe to be from max. Defaults to 1 */\n safety: number\n /** The request statuses that count as an invalid request. */\n errorStatuses: number[]\n /** The amount of requests that were requested from this bucket. */\n activeRequests: number\n /** The requests that are currently pending. */\n waiting: Array<(value: void | PromiseLike<void>) => void>\n /** Whether or not the waiting queue is already processing. */\n processing: boolean\n\n /** Gives the number of requests that are currently allowed. */\n requestsAllowed: () => number\n /** Checks if a request is allowed at this time. */\n isRequestAllowed: () => boolean\n /** Waits until a request is available */\n waitUntilRequestAvailable: () => Promise<void>\n /** Begins processing the waiting queue of requests. */\n processWaiting: () => Promise<void>\n /** Handler for whenever a request is validated. This should update the requested values or trigger any other necessary stuff. */\n handleCompletedRequest: (code: number, sharedScope: boolean) => void\n}\n"],"names":["delay","logger","createInvalidRequestBucket","options","bucket","invalidRequests","current","max","interval","resetAt","safety","errorStatuses","activeRequests","requested","processing","waiting","requestsAllowed","undefined","Date","now","isRequestAllowed","waitUntilRequestAvailable","Promise","resolve","push","processWaiting","length","info","JSON","stringify","warn","shift","handleCompletedRequest","code","sharedScope","includes"],"mappings":"AAAA,SAASA,KAAK,EAAEC,MAAM,QAAQ,oBAAmB;AAEjD;;;;;;CAMC,GACD,OAAO,SAASC,2BAA2BC,OAAoC,EAAwB;IACrG,MAAMC,SAA+B;QACnCC,iBAAiBF,QAAQG,OAAO,IAAI;QACpCC,KAAKJ,QAAQI,GAAG,IAAI;QACpBC,UAAUL,QAAQK,QAAQ,IAAI;QAC9BC,SAASN,QAAQM,OAAO;QACxBC,QAAQP,QAAQO,MAAM,IAAI;QAC1BC,eAAeR,QAAQQ,aAAa,IAAI;YAAC;YAAK;YAAK;SAAI;QACvDC,gBAAgBT,QAAQU,SAAS,IAAI;QACrCC,YAAY,KAAK;QAEjBC,SAAS,EAAE;QAEXC,iBAAiB,WAAY;YAC3B,IAAIZ,OAAOK,OAAO,KAAKQ,aAAaC,KAAKC,GAAG,MAAMf,OAAOK,OAAO,EAAE;gBAChEL,OAAOC,eAAe,GAAG;gBACzBD,OAAOK,OAAO,GAAGS,KAAKC,GAAG,KAAKf,OAAOI,QAAQ;YAC/C,CAAC;YAED,OAAOJ,OAAOG,GAAG,GAAGH,OAAOC,eAAe,GAAGD,OAAOQ,cAAc,GAAGR,OAAOM,MAAM;QACpF;QAEAU,kBAAkB,WAAY;YAC5B,OAAOhB,OAAOY,eAAe,KAAK;QACpC;QAEAK,2BAA2B,iBAAkB;YAC3C,qDAAqD;YACrD,OAAO,MAAM,IAAIC,QAAQ,OAAOC,UAAY;gBAC1C,2FAA2F;gBAC3F,IAAInB,OAAOgB,gBAAgB,IAAI;oBAC7BhB,OAAOQ,cAAc,IAAI;oBACzBW;gBACF,OAAO;oBACLnB,OAAOW,OAAO,CAACS,IAAI,CAACD;oBACpB,MAAMnB,OAAOqB,cAAc;gBAC7B,CAAC;YACH;QACF;QAEAA,gBAAgB,iBAAkB;YAChC,qEAAqE;YACrE,IAAIrB,OAAOU,UAAU,EAAE;YAEvB,gDAAgD;YAChDV,OAAOU,UAAU,GAAG,IAAI;YAExB,MAAOV,OAAOW,OAAO,CAACW,MAAM,GAAG,EAAG;gBAChCzB,OAAO0B,IAAI,CAAC,CAAC,6DAA6D,EAAEvB,OAAOW,OAAO,CAACW,MAAM,CAAC,8BAA8B,EAAEE,KAAKC,SAAS,CAACzB,QAAQ,CAAC;gBAE1J,IAAI,CAACA,OAAOgB,gBAAgB,MAAMhB,OAAOK,OAAO,KAAKQ,WAAW;oBAC9DhB,OAAO6B,IAAI,CAAC,CAAC,0FAA0F,EAAE1B,OAAOW,OAAO,CAACW,MAAM,CAAC,mBAAmB,EAAEE,KAAKC,SAAS,CAACzB,QAAQ,CAAC;oBAC5K,MAAMJ,MAAMI,OAAOK,OAAO,GAAGS,KAAKC,GAAG;gBACvC,CAAC;gBAEDf,OAAOQ,cAAc,IAAI;gBACzB,qCAAqC;gBACrCR,OAAOW,OAAO,CAACgB,KAAK;YACtB;YAEA,sEAAsE;YACtE3B,OAAOU,UAAU,GAAG,KAAK;QAC3B;QAEAkB,wBAAwB,SAAUC,IAAI,EAAEC,WAAW,EAAE;YACnD,+DAA+D;YAC/D9B,OAAOQ,cAAc,IAAI;YACzB,+DAA+D;YAC/D,IAAI,CAACR,OAAOO,aAAa,CAACwB,QAAQ,CAACF,OAAO;YAC1C,yCAAyC;YACzC,IAAIA,SAAS,OAAOC,aAAa;YAEjC,2BAA2B;YAC3B,IAAI9B,OAAOK,OAAO,KAAKQ,WAAW;gBAChCb,OAAOK,OAAO,GAAGS,KAAKC,GAAG,KAAKf,OAAOI,QAAQ;YAC/C,CAAC;YAEDJ,OAAOC,eAAe,IAAI;YAC1BJ,OAAO6B,IAAI,CAAC,CAAC,iFAAiF,EAAE1B,OAAOC,eAAe,CAAC,CAAC;QAC1H;IACF;IAEA,OAAOD;AACT,CAAC"}
|
package/dist/manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAkDA,OAAO,KAAK,EAA4B,wBAAwB,EAAE,WAAW,EAAsB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAkDA,OAAO,KAAK,EAA4B,wBAAwB,EAAE,WAAW,EAAsB,MAAM,YAAY,CAAA;AAKrH,eAAO,MAAM,mBAAmB,KAAK,CAAA;AACrC,eAAO,MAAM,eAAe,4BAA4B,CAAA;AAExD,eAAO,MAAM,uBAAuB,uBAAuB,CAAA;AAC3D,eAAO,MAAM,2BAA2B,0BAA0B,CAAA;AAClE,eAAO,MAAM,6BAA6B,4BAA4B,CAAA;AACtE,eAAO,MAAM,wBAAwB,uBAAuB,CAAA;AAC5D,eAAO,MAAM,wBAAwB,uBAAuB,CAAA;AAC5D,eAAO,MAAM,uBAAuB,sBAAsB,CAAA;AAC1D,eAAO,MAAM,uBAAuB,sBAAsB,CAAA;AAE1D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,WAAW,CAkoChF"}
|
package/dist/manager.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/restrict-template-expressions */ /* eslint-disable no-const-assign */ import {
|
|
2
|
-
import { calculateBits, camelize, camelToSnakeCase, delay, getBotIdFromToken, logger, processReactionString, urlToBase64 } from '@discordeno/utils';
|
|
3
|
-
import fetch from 'node-fetch';
|
|
1
|
+
/* eslint-disable @typescript-eslint/restrict-template-expressions */ /* eslint-disable no-const-assign */ import { calculateBits, camelToSnakeCase, camelize, delay, getBotIdFromToken, logger, processReactionString, urlToBase64 } from '@discordeno/utils';
|
|
4
2
|
import { createInvalidRequestBucket } from './invalidBucket.js';
|
|
5
3
|
import { Queue } from './queue.js';
|
|
4
|
+
import { InteractionResponseTypes } from '@discordeno/types';
|
|
6
5
|
import { createRoutes } from './routes.js';
|
|
7
6
|
// TODO: make dynamic based on package.json file
|
|
8
7
|
const version = '19.0.0-alpha.1';
|
|
@@ -61,11 +60,11 @@ export function createRestManager(options) {
|
|
|
61
60
|
'permissions',
|
|
62
61
|
'allow',
|
|
63
62
|
'deny'
|
|
64
|
-
].includes(key)) {
|
|
63
|
+
].includes(key) && obj[key] !== undefined) {
|
|
65
64
|
newObj[key] = calculateBits(obj[key]);
|
|
66
65
|
continue;
|
|
67
66
|
}
|
|
68
|
-
if (key === 'defaultMemberPermissions') {
|
|
67
|
+
if (key === 'defaultMemberPermissions' && obj[key] !== undefined) {
|
|
69
68
|
newObj.default_member_permissions = calculateBits(obj[key]);
|
|
70
69
|
continue;
|
|
71
70
|
}
|
|
@@ -219,8 +218,20 @@ export function createRestManager(options) {
|
|
|
219
218
|
authorization: 'Bot tokenhere'
|
|
220
219
|
}
|
|
221
220
|
});
|
|
222
|
-
const response = await fetch(url, payload)
|
|
221
|
+
const response = await fetch(url, payload).catch(async (error)=>{
|
|
222
|
+
logger.error(error);
|
|
223
|
+
// Mark request and completed
|
|
224
|
+
rest.invalidBucket.handleCompletedRequest(999, false);
|
|
225
|
+
options.reject({
|
|
226
|
+
ok: false,
|
|
227
|
+
status: 999,
|
|
228
|
+
error: 'Possible network or request shape issue occurred. If this is rare, its a network glitch. If it occurs a lot something is wrong.'
|
|
229
|
+
});
|
|
230
|
+
throw error;
|
|
231
|
+
});
|
|
223
232
|
logger.debug(`request fetched from ${url} with status ${response.status} & ${response.statusText}`);
|
|
233
|
+
// Mark request and completed
|
|
234
|
+
rest.invalidBucket.handleCompletedRequest(response.status, response.headers.get(RATE_LIMIT_SCOPE_HEADER) === 'shared');
|
|
224
235
|
// Set the bucket id if it was available on the headers
|
|
225
236
|
const bucketId = rest.processHeaders(rest.simplifyUrl(options.route, options.method), response.headers);
|
|
226
237
|
if (bucketId) options.bucketId = bucketId;
|
|
@@ -247,8 +258,6 @@ export function createRestManager(options) {
|
|
|
247
258
|
return;
|
|
248
259
|
}
|
|
249
260
|
options.retryCount += 1;
|
|
250
|
-
// Rate limited, add back to queue
|
|
251
|
-
rest.invalidBucket.handleCompletedRequest(response.status, response.headers.get(RATE_LIMIT_SCOPE_HEADER) === 'shared');
|
|
252
261
|
const resetAfter = response.headers.get(RATE_LIMIT_RESET_AFTER_HEADER);
|
|
253
262
|
if (resetAfter) await delay(Number(resetAfter) * 1000);
|
|
254
263
|
// process the response to prevent mem leak
|
package/dist/manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/manager.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/restrict-template-expressions */\n/* eslint-disable no-const-assign */\nimport { InteractionResponseTypes } from '@discordeno/types'\nimport { calculateBits, camelize, camelToSnakeCase, delay, getBotIdFromToken, logger, processReactionString, urlToBase64 } from '@discordeno/utils'\nimport fetch from 'node-fetch'\n\nimport { createInvalidRequestBucket } from './invalidBucket.js'\nimport { Queue } from './queue.js'\n\nimport type {\n BigString,\n Camelize,\n DiscordApplication,\n DiscordApplicationCommand,\n DiscordApplicationCommandPermissions,\n DiscordAuditLog,\n DiscordAutoModerationRule,\n DiscordBan,\n DiscordChannel,\n DiscordEmoji,\n DiscordFollowedChannel,\n DiscordGetGatewayBot,\n DiscordGuild,\n DiscordGuildPreview,\n DiscordGuildWidget,\n DiscordGuildWidgetSettings,\n DiscordIntegration,\n DiscordInvite,\n DiscordInviteMetadata,\n DiscordListActiveThreads,\n DiscordListArchivedThreads,\n DiscordMember,\n DiscordMemberWithUser,\n DiscordMessage,\n DiscordPrunedCount,\n DiscordRole,\n DiscordScheduledEvent,\n DiscordStageInstance,\n DiscordSticker,\n DiscordStickerPack,\n DiscordTemplate,\n DiscordThreadMember,\n DiscordUser,\n DiscordVanityUrl,\n DiscordVoiceRegion,\n DiscordWebhook,\n DiscordWelcomeScreen,\n MfaLevels,\n ModifyGuildTemplate,\n} from '@discordeno/types'\nimport type { CreateRequestBodyOptions, CreateRestManagerOptions, RestManager, SendRequestOptions } from './types.js'\nimport { createRoutes } from './routes.js'\n\n// TODO: make dynamic based on package.json file\nconst version = '19.0.0-alpha.1'\n\nexport const DISCORD_API_VERSION = 10\nexport const DISCORD_API_URL = 'https://discord.com/api'\n\nexport const AUDIT_LOG_REASON_HEADER = 'x-audit-log-reason'\nexport const RATE_LIMIT_REMAINING_HEADER = 'x-ratelimit-remaining'\nexport const RATE_LIMIT_RESET_AFTER_HEADER = 'x-ratelimit-reset-after'\nexport const RATE_LIMIT_GLOBAL_HEADER = 'x-ratelimit-global'\nexport const RATE_LIMIT_BUCKET_HEADER = 'x-ratelimit-bucket'\nexport const RATE_LIMIT_LIMIT_HEADER = 'x-ratelimit-limit'\nexport const RATE_LIMIT_SCOPE_HEADER = 'x-ratelimit-scope'\n\nexport function createRestManager(options: CreateRestManagerOptions): RestManager {\n const applicationId = options.applicationId ? BigInt(options.applicationId) : options.token ? getBotIdFromToken(options.token) : undefined\n if (!applicationId) {\n throw new Error(\n '`applicationId` was not provided and was not able to extract the id from the bots token. Please explicitly pass `applicationId` to the rest manager.',\n )\n }\n\n const baseUrl = options.proxy?.baseUrl ?? DISCORD_API_URL\n\n const rest: RestManager = {\n applicationId,\n authorization: options.proxy?.authorization,\n baseUrl,\n deleteQueueDelay: 60000,\n globallyRateLimited: false,\n invalidBucket: createInvalidRequestBucket({}),\n isProxied: !baseUrl.startsWith(DISCORD_API_URL),\n maxRetryCount: Infinity,\n processingRateLimitedPaths: false,\n queues: new Map(),\n rateLimitedPaths: new Map(),\n token: options.token,\n version: options.version ?? DISCORD_API_VERSION,\n\n routes: createRoutes(),\n\n checkRateLimits(url) {\n const ratelimited = rest.rateLimitedPaths.get(url)\n const global = rest.rateLimitedPaths.get('global')\n const now = Date.now()\n\n if (ratelimited && now < ratelimited.resetTimestamp) {\n return ratelimited.resetTimestamp - now\n }\n\n if (global && now < global.resetTimestamp) {\n return global.resetTimestamp - now\n }\n\n return false\n },\n\n changeToDiscordFormat(obj: any): any {\n if (obj === null) return null\n\n if (typeof obj === 'object') {\n if (Array.isArray(obj)) {\n return obj.map((item) => rest.changeToDiscordFormat(item))\n }\n\n const newObj: any = {}\n\n for (const key of Object.keys(obj)) {\n // Keys that dont require snake casing\n if (['permissions', 'allow', 'deny'].includes(key)) {\n newObj[key] = calculateBits(obj[key])\n continue\n }\n\n if (key === 'defaultMemberPermissions') {\n newObj.default_member_permissions = calculateBits(obj[key])\n continue\n }\n\n newObj[camelToSnakeCase(key)] = rest.changeToDiscordFormat(obj[key])\n }\n\n return newObj\n }\n\n if (typeof obj === 'bigint') return obj.toString()\n\n return obj\n },\n\n createRequestBody(method, options) {\n const headers: Record<string, string> = {\n 'user-agent': `DiscordBot (https://github.com/discordeno/discordeno, v${version})`,\n }\n\n if (options?.unauthorized !== false) headers.authorization = `Bot ${rest.token}`\n\n // IF A REASON IS PROVIDED ENCODE IT IN HEADERS\n if (options?.reason !== undefined) {\n headers[AUDIT_LOG_REASON_HEADER] = encodeURIComponent(options?.reason)\n }\n\n let body: string | FormData | undefined\n\n // TODO: check if we need to add specific check for GET method\n // Since GET does not allow bodies\n\n // Have to check for attachments first, since body then has to be send in a different way.\n if (options?.files !== undefined) {\n const form = new FormData()\n for (let i = 0; i < options.files.length; ++i) {\n form.append(`file${i}`, options.files[i].blob, options.files[i].name)\n }\n\n form.append('payload_json', JSON.stringify({ ...options.body, files: undefined }))\n\n body = form\n\n // No need to set the `content-type` header since `fetch` does that automatically for us when we use a `FormData` object.\n } else if (options?.body !== undefined) {\n if (options.body instanceof FormData) {\n body = options.body\n // No need to set the `content-type` header since `fetch` does that automatically for us when we use a `FormData` object.\n } else {\n body = JSON.stringify(rest.changeToDiscordFormat(options.body))\n headers['content-type'] = `application/json`\n }\n }\n\n // SOMETIMES SPECIAL HEADERS (E.G. CUSTOM AUTHORIZATION) NEED TO BE USED\n if (options?.headers) {\n Object.assign(headers, options.headers)\n }\n\n return {\n body,\n headers,\n method,\n }\n },\n\n processRateLimitedPaths() {\n const now = Date.now()\n\n for (const [key, value] of rest.rateLimitedPaths.entries()) {\n // rest.debug(\n // `[REST - processRateLimitedPaths] Running for of loop. ${\n // value.resetTimestamp - now\n // }`\n // )\n // If the time has not reached cancel\n if (value.resetTimestamp > now) continue\n\n // Rate limit is over, delete the rate limiter\n rest.rateLimitedPaths.delete(key)\n // If it was global, also mark the global value as false\n if (key === 'global') rest.globallyRateLimited = false\n }\n\n // ALL PATHS ARE CLEARED CAN CANCEL OUT!\n if (rest.rateLimitedPaths.size === 0) {\n rest.processingRateLimitedPaths = false\n } else {\n rest.processingRateLimitedPaths = true\n // RECHECK IN 1 SECOND\n setTimeout(() => {\n // rest.debug('[REST - processRateLimitedPaths] Running setTimeout.')\n rest.processRateLimitedPaths()\n }, 1000)\n }\n },\n\n /** Processes the rate limit headers and determines if it needs to be rate limited and returns the bucket id if available */\n processHeaders(url, headers) {\n let rateLimited = false\n\n // GET ALL NECESSARY HEADERS\n const remaining = headers.get(RATE_LIMIT_REMAINING_HEADER)\n const retryAfter = headers.get(RATE_LIMIT_RESET_AFTER_HEADER)\n const reset = Date.now() + Number(retryAfter) * 1000\n const global = headers.get(RATE_LIMIT_GLOBAL_HEADER)\n // undefined override null needed for typings\n const bucketId = headers.get(RATE_LIMIT_BUCKET_HEADER) ?? undefined\n const limit = headers.get(RATE_LIMIT_LIMIT_HEADER)\n\n rest.queues.get(url)?.handleCompletedRequest({\n remaining: remaining ? Number(remaining) : undefined,\n interval: retryAfter ? Number(retryAfter) * 1000 : undefined,\n max: limit ? Number(limit) : undefined,\n })\n\n // IF THERE IS NO REMAINING RATE LIMIT, MARK IT AS RATE LIMITED\n if (remaining === '0') {\n rateLimited = true\n\n // SAVE THE URL AS LIMITED, IMPORTANT FOR NEW REQUESTS BY USER WITHOUT BUCKET\n rest.rateLimitedPaths.set(url, {\n url,\n resetTimestamp: reset,\n bucketId,\n })\n\n // SAVE THE BUCKET AS LIMITED SINCE DIFFERENT URLS MAY SHARE A BUCKET\n if (bucketId) {\n rest.rateLimitedPaths.set(bucketId, {\n url,\n resetTimestamp: reset,\n bucketId,\n })\n }\n }\n\n // IF THERE IS NO REMAINING GLOBAL LIMIT, MARK IT RATE LIMITED GLOBALLY\n if (global) {\n const retryAfter = headers.get('retry-after')\n const globalReset = Date.now() + Number(retryAfter) * 1000\n // rest.debug(\n // `[REST = Globally Rate Limited] URL: ${url} | Global Rest: ${globalReset}`\n // )\n rest.globallyRateLimited = true\n rateLimited = true\n\n setTimeout(() => {\n rest.globallyRateLimited = false\n }, globalReset)\n\n rest.rateLimitedPaths.set('global', {\n url: 'global',\n resetTimestamp: globalReset,\n bucketId,\n })\n\n if (bucketId) {\n rest.rateLimitedPaths.set(bucketId, {\n url: 'global',\n resetTimestamp: globalReset,\n bucketId,\n })\n }\n }\n\n if (rateLimited && !rest.processingRateLimitedPaths) {\n rest.processRateLimitedPaths()\n }\n return rateLimited ? bucketId : undefined\n },\n\n async sendRequest(options) {\n const url = `${rest.baseUrl}/v${rest.version}${options.route}`\n const payload = rest.createRequestBody(options.method, options.requestBodyOptions)\n\n logger.debug(`sending request to ${url}`, 'with payload:', { ...payload, headers: { ...payload.headers, authorization: 'Bot tokenhere' } })\n const response = await fetch(url, payload)\n logger.debug(`request fetched from ${url} with status ${response.status} & ${response.statusText}`)\n\n // Set the bucket id if it was available on the headers\n const bucketId = rest.processHeaders(rest.simplifyUrl(options.route, options.method), response.headers)\n if (bucketId) options.bucketId = bucketId\n\n if (response.status < HttpResponseCode.Success || response.status >= HttpResponseCode.Error) {\n logger.debug(`Request to ${url} failed.`)\n\n if (response.status !== HttpResponseCode.TooManyRequests) {\n options.reject({ ok: false, status: response.status, body: await response.text() })\n return\n }\n\n logger.debug(`Request to ${url} was ratelimited.`)\n // Too many attempts, get rid of request from queue.\n if (options.retryCount >= rest.maxRetryCount) {\n logger.debug(`Request to ${url} exceeded the maximum allowed retries.`, 'with payload:', payload)\n // rest.debug(`[REST - RetriesMaxed] ${JSON.stringify(options)}`)\n options.reject({\n ok: false,\n status: response.status,\n error: 'The request was rate limited and it maxed out the retries limit.',\n })\n\n return\n }\n\n options.retryCount += 1\n\n // Rate limited, add back to queue\n rest.invalidBucket.handleCompletedRequest(response.status, response.headers.get(RATE_LIMIT_SCOPE_HEADER) === 'shared')\n\n const resetAfter = response.headers.get(RATE_LIMIT_RESET_AFTER_HEADER)\n if (resetAfter) await delay(Number(resetAfter) * 1000)\n // process the response to prevent mem leak\n await response.arrayBuffer()\n\n return await options.retryRequest?.(options)\n }\n\n // Discord sometimes sends no response with no content.\n options.resolve({ ok: true, status: response.status, body: response.status === HttpResponseCode.NoContent ? undefined : await response.text() })\n },\n\n simplifyUrl(url, method) {\n const parts = url.split('/')\n const secondLastPart = parts[parts.length - 2]\n\n if (secondLastPart === 'channels' || secondLastPart === 'guilds') {\n return url\n }\n\n if (secondLastPart === 'reactions' || parts[parts.length - 1] === '@me') {\n parts.splice(-2)\n parts.push('reactions')\n } else {\n parts.splice(-1)\n parts.push('x')\n }\n\n if (parts[parts.length - 3] === 'reactions') {\n parts.splice(-2)\n }\n\n if (method === 'DELETE' && secondLastPart === 'messages') {\n return `D${parts.join('/')}`\n }\n\n return parts.join('/')\n },\n\n async processRequest(request: SendRequestOptions) {\n const url = rest.simplifyUrl(request.route, request.method)\n\n if (request.runThroughQueue === false) {\n await rest.sendRequest(request)\n\n return\n }\n\n const queue = rest.queues.get(url)\n\n if (queue !== undefined) {\n queue.makeRequest(request)\n } else {\n // CREATES A NEW QUEUE\n const bucketQueue = new Queue(rest, { url, deleteQueueDelay: rest.deleteQueueDelay })\n\n // Add request to queue\n bucketQueue.makeRequest(request)\n // Save queue\n rest.queues.set(url, bucketQueue)\n }\n },\n\n async makeRequest(method, route, options) {\n if (rest.isProxied) {\n if (rest.authorization !== undefined) {\n options ??= {}\n options.headers ??= {}\n options.headers.authorization = rest.authorization\n }\n\n const result = await fetch(`${rest.baseUrl}/v${rest.version}${route}`, rest.createRequestBody(method, options))\n\n if (!result.ok) {\n const err = (await result.json().catch(() => {})) as Record<string, any>\n // Legacy Handling to not break old code or when body is missing\n if (!err?.body) throw new Error(`Error: ${err.message ?? result.statusText}`)\n throw new Error(JSON.stringify(err))\n }\n\n return result.status !== 204 ? ((await result.json()) as any) : undefined\n }\n\n // eslint-disable-next-line no-async-promise-executor\n return await new Promise(async (resolve, reject) => {\n const payload: SendRequestOptions = {\n route,\n method,\n requestBodyOptions: options,\n retryCount: 0,\n retryRequest: async function (payload: SendRequestOptions) {\n await rest.processRequest(payload)\n },\n resolve: (data) => {\n resolve(data.status !== 204 ? JSON.parse(data.body ?? '{}') : undefined)\n },\n reject,\n runThroughQueue: options?.runThroughQueue,\n }\n\n await rest.processRequest(payload)\n })\n },\n\n async get<T = Record<string, unknown>>(url: string, options?: Omit<CreateRequestBodyOptions, 'body' | 'method'>) {\n return camelize(await rest.makeRequest('GET', url, options)) as Camelize<T>\n },\n\n async post<T = Record<string, unknown>>(url: string, options?: Omit<CreateRequestBodyOptions, 'body' | 'method'>) {\n return camelize(await rest.makeRequest('POST', url, options)) as Camelize<T>\n },\n\n async delete(url: string, options?: Omit<CreateRequestBodyOptions, 'body' | 'method'>) {\n camelize(await rest.makeRequest('DELETE', url, options))\n },\n\n async patch<T = Record<string, unknown>>(url: string, options?: Omit<CreateRequestBodyOptions, 'body' | 'method'>) {\n return camelize(await rest.makeRequest('PATCH', url, options)) as Camelize<T>\n },\n\n async put<T = void>(url: string, options?: Omit<CreateRequestBodyOptions, 'body' | 'method'>) {\n return camelize(await rest.makeRequest('PUT', url, options)) as Camelize<T>\n },\n\n async addReaction(channelId, messageId, reaction) {\n reaction = processReactionString(reaction)\n\n await rest.put(rest.routes.channels.reactions.bot(channelId, messageId, reaction))\n },\n\n async addReactions(channelId, messageId, reactions, ordered = false) {\n if (!ordered) {\n await Promise.all(\n reactions.map(async (reaction) => {\n await rest.addReaction(channelId, messageId, reaction)\n }),\n )\n return\n }\n\n for (const reaction of reactions) {\n await rest.addReaction(channelId, messageId, reaction)\n }\n },\n\n async addRole(guildId, userId, roleId, reason) {\n await rest.put(rest.routes.guilds.roles.member(guildId, userId, roleId), { reason })\n },\n\n async addThreadMember(channelId, userId) {\n await rest.put(rest.routes.channels.threads.user(channelId, userId))\n },\n\n async createAutomodRule(guildId, body, reason) {\n return await rest.post<DiscordAutoModerationRule>(rest.routes.guilds.automod.rules(guildId), { body, reason })\n },\n\n async createChannel(guildId, body, reason) {\n return await rest.post<DiscordChannel>(rest.routes.guilds.channels(guildId), { body, reason })\n },\n\n async createEmoji(guildId, body, reason) {\n return await rest.post<DiscordEmoji>(rest.routes.guilds.emojis(guildId), { body, reason })\n },\n\n async createGlobalApplicationCommand(body) {\n return await rest.post<DiscordApplicationCommand>(rest.routes.interactions.commands.commands(rest.applicationId), { body })\n },\n\n async createGuild(body) {\n return await rest.post<DiscordGuild>(rest.routes.guilds.all(), { body })\n },\n\n async createGuildApplicationCommand(body, guildId) {\n return await rest.post<DiscordApplicationCommand>(rest.routes.interactions.commands.guilds.all(rest.applicationId, guildId), { body })\n },\n\n async createGuildFromTemplate(templateCode, body) {\n if (body.icon) {\n body.icon = await urlToBase64(body.icon)\n }\n\n return await rest.post<DiscordGuild>(rest.routes.guilds.templates.code(templateCode), { body })\n },\n\n async createGuildSticker(guildId, options, reason) {\n const form = new FormData()\n form.append('file', options.file.blob, options.file.name)\n form.append('name', options.name)\n form.append('description', options.description)\n form.append('tags', options.tags)\n\n return await rest.post<DiscordSticker>(rest.routes.guilds.stickers(guildId), { body: form, reason })\n },\n\n async createGuildTemplate(guildId, body) {\n return await rest.post<DiscordTemplate>(rest.routes.guilds.templates.all(guildId), { body })\n },\n\n async createForumThread(channelId, body, reason) {\n return await rest.post<DiscordChannel>(rest.routes.channels.forum(channelId), { body, files: body.files, reason })\n },\n\n async createInvite(channelId, body = {}, reason) {\n return await rest.post<DiscordInvite>(rest.routes.channels.invites(channelId), { body, reason })\n },\n\n async createRole(guildId, body, reason) {\n return await rest.post<DiscordRole>(rest.routes.guilds.roles.all(guildId), { body, reason })\n },\n\n async createScheduledEvent(guildId, body, reason) {\n return await rest.post<DiscordScheduledEvent>(rest.routes.guilds.events.events(guildId), { body, reason })\n },\n\n async createStageInstance(body, reason) {\n return await rest.post<DiscordStageInstance>(rest.routes.channels.stages(), { body, reason })\n },\n\n async createWebhook(channelId, options, reason) {\n return await rest.post<DiscordWebhook>(rest.routes.channels.webhooks(channelId), {\n body: {\n name: options.name,\n avatar: options.avatar ? await urlToBase64(options.avatar) : undefined,\n },\n reason,\n })\n },\n\n async deleteAutomodRule(guildId, ruleId, reason) {\n await rest.delete(rest.routes.guilds.automod.rule(guildId, ruleId), { reason })\n },\n\n async deleteChannel(channelId, reason) {\n await rest.delete(rest.routes.channels.channel(channelId), {\n reason,\n })\n },\n\n async deleteChannelPermissionOverride(channelId, overwriteId, reason) {\n await rest.delete(rest.routes.channels.overwrite(channelId, overwriteId), { reason })\n },\n\n async deleteEmoji(guildId, id, reason) {\n await rest.delete(rest.routes.guilds.emoji(guildId, id), { reason })\n },\n\n async deleteFollowupMessage(token, messageId) {\n await rest.delete(rest.routes.interactions.responses.message(rest.applicationId, token, messageId), { unauthorized: true })\n },\n\n async deleteGlobalApplicationCommand(commandId) {\n await rest.delete(rest.routes.interactions.commands.command(rest.applicationId, commandId))\n },\n\n async deleteGuild(guildId) {\n await rest.delete(rest.routes.guilds.guild(guildId))\n },\n\n async deleteGuildApplicationCommand(commandId, guildId) {\n await rest.delete(rest.routes.interactions.commands.guilds.one(rest.applicationId, guildId, commandId))\n },\n\n async deleteGuildSticker(guildId, stickerId, reason) {\n await rest.delete(rest.routes.guilds.sticker(guildId, stickerId), { reason })\n },\n\n async deleteGuildTemplate(guildId, templateCode) {\n await rest.delete(rest.routes.guilds.templates.guild(guildId, templateCode))\n },\n\n async deleteIntegration(guildId, integrationId, reason) {\n await rest.delete(rest.routes.guilds.integration(guildId, integrationId), { reason })\n },\n\n async deleteInvite(inviteCode, reason) {\n await rest.delete(rest.routes.guilds.invite(inviteCode), { reason })\n },\n\n async deleteMessage(channelId, messageId, reason) {\n await rest.delete(rest.routes.channels.message(channelId, messageId), { reason })\n },\n\n async deleteMessages(channelId, messageIds, reason) {\n await rest.post(rest.routes.channels.bulk(channelId), {\n body: {\n messages: messageIds.slice(0, 100).map((id) => id.toString()),\n },\n reason,\n })\n },\n\n async deleteOriginalInteractionResponse(token) {\n await rest.delete(rest.routes.interactions.responses.original(rest.applicationId, token), { unauthorized: true })\n },\n\n async deleteOwnReaction(channelId, messageId, reaction) {\n reaction = processReactionString(reaction)\n\n await rest.delete(rest.routes.channels.reactions.bot(channelId, messageId, reaction))\n },\n\n async deleteReactionsAll(channelId, messageId) {\n await rest.delete(rest.routes.channels.reactions.all(channelId, messageId))\n },\n\n async deleteReactionsEmoji(channelId, messageId, reaction) {\n reaction = processReactionString(reaction)\n\n await rest.delete(rest.routes.channels.reactions.emoji(channelId, messageId, reaction))\n },\n\n async deleteRole(guildId, roleId, reason) {\n await rest.delete(rest.routes.guilds.roles.one(guildId, roleId), { reason })\n },\n\n async deleteScheduledEvent(guildId, eventId) {\n await rest.delete(rest.routes.guilds.events.event(guildId, eventId))\n },\n\n async deleteStageInstance(channelId, reason) {\n await rest.delete(rest.routes.channels.stage(channelId), { reason })\n },\n\n async deleteUserReaction(channelId, messageId, userId, reaction) {\n reaction = processReactionString(reaction)\n\n await rest.delete(rest.routes.channels.reactions.user(channelId, messageId, reaction, userId))\n },\n\n async deleteWebhook(webhookId, reason) {\n await rest.delete(rest.routes.webhooks.id(webhookId), { reason })\n },\n\n async deleteWebhookMessage(webhookId, token, messageId, options) {\n await rest.delete(rest.routes.webhooks.message(webhookId, token, messageId, options))\n },\n\n async deleteWebhookWithToken(webhookId, token) {\n await rest.delete(rest.routes.webhooks.webhook(webhookId, token))\n },\n\n async editApplicationCommandPermissions(guildId, commandId, bearerToken, permissions) {\n return await rest.put<DiscordApplicationCommandPermissions>(\n rest.routes.interactions.commands.permission(rest.applicationId, guildId, commandId),\n {\n body: {\n permissions,\n },\n headers: { authorization: `Bearer ${bearerToken}` },\n },\n )\n },\n\n async editAutomodRule(guildId, ruleId, body, reason) {\n return await rest.patch<DiscordAutoModerationRule>(rest.routes.guilds.automod.rule(guildId, ruleId), { body, reason })\n },\n\n async editBotProfile(options) {\n const avatar = options?.botAvatarURL ? await urlToBase64(options?.botAvatarURL) : options?.botAvatarURL\n\n return await rest.patch<DiscordUser>(rest.routes.userBot(), {\n body: {\n username: options.username?.trim(),\n avatar,\n },\n })\n },\n\n async editChannel(channelId, body, reason) {\n return await rest.patch<DiscordChannel>(rest.routes.channels.channel(channelId), { body, reason })\n },\n\n async editChannelPermissionOverrides(channelId, body, reason) {\n await rest.put(rest.routes.channels.overwrite(channelId, body.id), { body, reason })\n },\n\n async editChannelPositions(guildId, body) {\n await rest.patch(rest.routes.guilds.channels(guildId), { body })\n },\n\n async editEmoji(guildId, id, body, reason) {\n return await rest.patch<DiscordEmoji>(rest.routes.guilds.emoji(guildId, id), { body, reason })\n },\n\n async editFollowupMessage(token, messageId, body) {\n return await rest.patch<DiscordMessage>(rest.routes.interactions.responses.message(rest.applicationId, token, messageId), {\n body,\n files: body.files,\n unauthorized: true,\n })\n },\n\n async editGlobalApplicationCommand(commandId, body) {\n return await rest.patch<DiscordApplicationCommand>(rest.routes.interactions.commands.command(rest.applicationId, commandId), { body })\n },\n\n async editGuild(guildId, body, reason) {\n return await rest.patch<DiscordGuild>(rest.routes.guilds.guild(guildId), { body, reason })\n },\n\n async editGuildApplicationCommand(commandId, guildId, body) {\n return await rest.patch<DiscordApplicationCommand>(rest.routes.interactions.commands.guilds.one(rest.applicationId, guildId, commandId), {\n body,\n })\n },\n\n async editGuildMfaLevel(guildId: BigString, mfaLevel: MfaLevels, reason?: string): Promise<void> {\n await rest.post(rest.routes.guilds.mfa(guildId), { body: { level: mfaLevel }, reason })\n },\n\n async editGuildSticker(guildId, stickerId, body, reason) {\n return await rest.patch<DiscordSticker>(rest.routes.guilds.sticker(guildId, stickerId), { body, reason })\n },\n\n async editGuildTemplate(guildId, templateCode: string, body: ModifyGuildTemplate): Promise<Camelize<DiscordTemplate>> {\n return await rest.patch<DiscordTemplate>(rest.routes.guilds.templates.guild(guildId, templateCode), { body })\n },\n\n async editMessage(channelId, messageId, body) {\n return await rest.patch<DiscordMessage>(rest.routes.channels.message(channelId, messageId), { body })\n },\n\n async editOriginalInteractionResponse(token, body) {\n return await rest.patch<DiscordMessage>(rest.routes.interactions.responses.original(rest.applicationId, token), {\n body,\n files: body.files,\n })\n },\n\n async editOriginalWebhookMessage(webhookId, token, options) {\n return await rest.patch<DiscordMessage>(rest.routes.webhooks.original(webhookId, token, options), {\n body: {\n type: InteractionResponseTypes.UpdateMessage,\n data: options,\n },\n files: options.files,\n unauthorized: true,\n })\n },\n\n async editOwnVoiceState(guildId, options) {\n await rest.patch(rest.routes.guilds.voice(guildId), {\n body: {\n ...options,\n request_to_speak_timestamp: options.requestToSpeakTimestamp\n ? new Date(options.requestToSpeakTimestamp).toISOString()\n : options.requestToSpeakTimestamp,\n },\n })\n },\n\n async editScheduledEvent(guildId, eventId, body, reason) {\n return await rest.patch<DiscordScheduledEvent>(rest.routes.guilds.events.event(guildId, eventId), { body, reason })\n },\n\n async editRole(guildId, roleId, body, reason) {\n return await rest.patch<DiscordRole>(rest.routes.guilds.roles.one(guildId, roleId), { body, reason })\n },\n\n async editRolePositions(guildId, body, reason) {\n return await rest.patch<DiscordRole[]>(rest.routes.guilds.roles.all(guildId), { body, reason })\n },\n\n async editStageInstance(channelId, topic, reason?: string) {\n return await rest.patch<DiscordStageInstance>(rest.routes.channels.stage(channelId), { body: { topic }, reason })\n },\n\n async editUserVoiceState(guildId, options) {\n await rest.patch(rest.routes.guilds.voice(guildId, options.userId), { body: options })\n },\n\n async editWebhook(webhookId, body, reason) {\n return await rest.patch<DiscordWebhook>(rest.routes.webhooks.id(webhookId), { body, reason })\n },\n\n async editWebhookMessage(webhookId, token, messageId, options) {\n return await rest.patch<DiscordMessage>(rest.routes.webhooks.message(webhookId, token, messageId, options), {\n body: options,\n files: options.files,\n })\n },\n\n async editWebhookWithToken(webhookId, token, body) {\n return await rest.patch<DiscordWebhook>(rest.routes.webhooks.webhook(webhookId, token), { body })\n },\n\n async editWelcomeScreen(guildId, body, reason) {\n return await rest.patch<DiscordWelcomeScreen>(rest.routes.guilds.welcome(guildId), { body, reason })\n },\n\n async editWidgetSettings(guildId, body, reason) {\n return await rest.patch<DiscordGuildWidgetSettings>(rest.routes.guilds.widget(guildId), { body, reason })\n },\n\n async executeWebhook(webhookId, token, options) {\n return await rest.post<DiscordMessage>(rest.routes.webhooks.webhook(webhookId, token, options), { body: options })\n },\n\n async followAnnouncement(sourceChannelId, targetChannelId) {\n return await rest.post<DiscordFollowedChannel>(rest.routes.channels.follow(sourceChannelId), {\n body: {\n webhook_channel_id: targetChannelId,\n },\n })\n },\n\n async getActiveThreads(guildId) {\n return await rest.get<DiscordListActiveThreads>(rest.routes.channels.threads.active(guildId))\n },\n\n async getApplicationCommandPermission(guildId, commandId) {\n return await rest.get<DiscordApplicationCommandPermissions>(\n rest.routes.interactions.commands.permission(rest.applicationId, guildId, commandId),\n )\n },\n\n async getApplicationCommandPermissions(guildId) {\n return await rest.get<DiscordApplicationCommandPermissions[]>(rest.routes.interactions.commands.permissions(rest.applicationId, guildId))\n },\n\n async getApplicationInfo() {\n return await rest.get<DiscordApplication>(rest.routes.oauth2Application())\n },\n\n async getAuditLog(guildId, options) {\n return await rest.get<DiscordAuditLog>(rest.routes.guilds.auditlogs(guildId, options))\n },\n\n async getAutomodRule(guildId, ruleId) {\n return await rest.get<DiscordAutoModerationRule>(rest.routes.guilds.automod.rule(guildId, ruleId))\n },\n\n async getAutomodRules(guildId) {\n return await rest.get<DiscordAutoModerationRule[]>(rest.routes.guilds.automod.rules(guildId))\n },\n\n async getAvailableVoiceRegions() {\n return await rest.get<DiscordVoiceRegion[]>(rest.routes.regions())\n },\n\n async getBan(guildId, userId) {\n return await rest.get<DiscordBan>(rest.routes.guilds.members.ban(guildId, userId))\n },\n\n async getBans(guildId, options) {\n return await rest.get<DiscordBan[]>(rest.routes.guilds.members.bans(guildId, options))\n },\n\n async getChannel(id) {\n return await rest.get<DiscordChannel>(rest.routes.channels.channel(id))\n },\n\n async getChannelInvites(channelId) {\n return await rest.get<DiscordInviteMetadata[]>(rest.routes.channels.invites(channelId))\n },\n\n async getChannels(guildId) {\n return await rest.get<DiscordChannel[]>(rest.routes.guilds.channels(guildId))\n },\n\n async getChannelWebhooks(channelId) {\n return await rest.get<DiscordWebhook[]>(rest.routes.channels.webhooks(channelId))\n },\n\n async getDmChannel(userId) {\n return await rest.post<DiscordChannel>(rest.routes.channels.dm(), {\n body: { recipient_id: userId },\n })\n },\n\n async getEmoji(guildId, emojiId) {\n return await rest.get<DiscordEmoji>(rest.routes.guilds.emoji(guildId, emojiId))\n },\n\n async getEmojis(guildId) {\n return await rest.get<DiscordEmoji[]>(rest.routes.guilds.emojis(guildId))\n },\n\n async getFollowupMessage(token, messageId) {\n return await rest.get<DiscordMessage>(rest.routes.interactions.responses.message(rest.applicationId, token, messageId), { unauthorized: true })\n },\n\n async getGatewayBot() {\n return await rest.get<DiscordGetGatewayBot>(rest.routes.gatewayBot())\n },\n\n async getGlobalApplicationCommand(commandId) {\n return await rest.get<DiscordApplicationCommand>(rest.routes.interactions.commands.command(rest.applicationId, commandId))\n },\n\n async getGlobalApplicationCommands() {\n return await rest.get<DiscordApplicationCommand[]>(rest.routes.interactions.commands.commands(rest.applicationId))\n },\n\n async getGuild(guildId, options = { counts: true }) {\n return await rest.get<DiscordGuild>(rest.routes.guilds.guild(guildId, options.counts))\n },\n\n async getGuildApplicationCommand(commandId, guildId) {\n return await rest.get<DiscordApplicationCommand>(rest.routes.interactions.commands.guilds.one(rest.applicationId, guildId, commandId))\n },\n\n async getGuildApplicationCommands(guildId) {\n return await rest.get<DiscordApplicationCommand[]>(rest.routes.interactions.commands.guilds.all(rest.applicationId, guildId))\n },\n\n async getGuildPreview(guildId) {\n return await rest.get<DiscordGuildPreview>(rest.routes.guilds.preview(guildId))\n },\n\n async getGuildTemplate(templateCode) {\n return await rest.get<DiscordTemplate>(rest.routes.guilds.templates.code(templateCode))\n },\n\n async getGuildTemplates(guildId) {\n return await rest.get<DiscordTemplate[]>(rest.routes.guilds.templates.all(guildId))\n },\n\n async getGuildWebhooks(guildId) {\n return await rest.get<DiscordWebhook[]>(rest.routes.guilds.webhooks(guildId))\n },\n\n async getIntegrations(guildId) {\n return await rest.get<DiscordIntegration[]>(rest.routes.guilds.integrations(guildId))\n },\n\n async getInvite(inviteCode, options) {\n return await rest.get<DiscordInviteMetadata>(rest.routes.guilds.invite(inviteCode, options))\n },\n\n async getInvites(guildId) {\n return await rest.get<DiscordInviteMetadata[]>(rest.routes.guilds.invites(guildId))\n },\n\n async getMessage(channelId, messageId) {\n return await rest.get<DiscordMessage>(rest.routes.channels.message(channelId, messageId))\n },\n\n async getMessages(channelId, options) {\n return await rest.get<DiscordMessage[]>(rest.routes.channels.messages(channelId, options))\n },\n\n async getNitroStickerPacks() {\n return await rest.get<DiscordStickerPack[]>(rest.routes.nitroStickerPacks())\n },\n\n async getOriginalInteractionResponse(token) {\n return await rest.get<DiscordMessage>(rest.routes.interactions.responses.original(rest.applicationId, token), { unauthorized: true })\n },\n\n async getPinnedMessages(channelId) {\n return await rest.get<DiscordMessage[]>(rest.routes.channels.pins(channelId))\n },\n\n async getPrivateArchivedThreads(channelId, options) {\n return await rest.get<DiscordListArchivedThreads>(rest.routes.channels.threads.private(channelId, options))\n },\n\n async getPrivateJoinedArchivedThreads(channelId, options) {\n return await rest.get<DiscordListArchivedThreads>(rest.routes.channels.threads.joined(channelId, options))\n },\n\n async getPruneCount(guildId, options) {\n return await rest.get<DiscordPrunedCount>(rest.routes.guilds.prune(guildId, options))\n },\n\n async getPublicArchivedThreads(channelId, options) {\n return await rest.get<DiscordListArchivedThreads>(rest.routes.channels.threads.public(channelId, options))\n },\n\n async getRoles(guildId) {\n return await rest.get<DiscordRole[]>(rest.routes.guilds.roles.all(guildId))\n },\n\n async getScheduledEvent(guildId, eventId, options) {\n return await rest.get<DiscordScheduledEvent>(rest.routes.guilds.events.event(guildId, eventId, options?.withUserCount))\n },\n\n async getScheduledEvents(guildId, options) {\n return await rest.get<DiscordScheduledEvent[]>(rest.routes.guilds.events.events(guildId, options?.withUserCount))\n },\n\n async getScheduledEventUsers(guildId, eventId, options) {\n return await rest.get<Array<{ user: DiscordUser; member?: DiscordMember }>>(rest.routes.guilds.events.users(guildId, eventId, options))\n },\n\n async getSessionInfo() {\n return await rest.getGatewayBot()\n },\n\n async getStageInstance(channelId) {\n return await rest.get<DiscordStageInstance>(rest.routes.channels.stage(channelId))\n },\n\n async getSticker(stickerId: BigString) {\n return await rest.get<DiscordSticker>(rest.routes.sticker(stickerId))\n },\n\n async getGuildSticker(guildId, stickerId) {\n return await rest.get<DiscordSticker>(rest.routes.guilds.sticker(guildId, stickerId))\n },\n\n async getGuildStickers(guildId) {\n return await rest.get<DiscordSticker[]>(rest.routes.guilds.stickers(guildId))\n },\n\n async getThreadMember(channelId, userId) {\n return await rest.get<DiscordThreadMember>(rest.routes.channels.threads.user(channelId, userId))\n },\n\n async getThreadMembers(channelId) {\n return await rest.get<DiscordThreadMember[]>(rest.routes.channels.threads.members(channelId))\n },\n\n async getReactions(channelId, messageId, reaction, options) {\n return await rest.get<DiscordUser[]>(rest.routes.channels.reactions.message(channelId, messageId, reaction, options))\n },\n\n async getUser(id) {\n return await rest.get<DiscordUser>(rest.routes.user(id))\n },\n\n async getVanityUrl(guildId) {\n return await rest.get<DiscordVanityUrl>(rest.routes.guilds.vanity(guildId))\n },\n\n async getVoiceRegions(guildId) {\n return await rest.get<DiscordVoiceRegion[]>(rest.routes.guilds.regions(guildId))\n },\n\n async getWebhook(webhookId) {\n return await rest.get<DiscordWebhook>(rest.routes.webhooks.id(webhookId))\n },\n\n async getWebhookMessage(webhookId, token, messageId, options) {\n return await rest.get<DiscordMessage>(rest.routes.webhooks.message(webhookId, token, messageId, options))\n },\n\n async getWebhookWithToken(webhookId, token) {\n return await rest.get<DiscordWebhook>(rest.routes.webhooks.webhook(webhookId, token))\n },\n\n async getWelcomeScreen(guildId) {\n return await rest.get<DiscordWelcomeScreen>(rest.routes.guilds.welcome(guildId))\n },\n\n async getWidget(guildId) {\n return await rest.get<DiscordGuildWidget>(rest.routes.guilds.widgetJson(guildId))\n },\n\n async getWidgetSettings(guildId) {\n return await rest.get<DiscordGuildWidgetSettings>(rest.routes.guilds.widget(guildId))\n },\n\n async joinThread(channelId) {\n await rest.put(rest.routes.channels.threads.me(channelId))\n },\n\n async leaveGuild(guildId) {\n await rest.delete(rest.routes.guilds.leave(guildId))\n },\n\n async leaveThread(channelId) {\n await rest.delete(rest.routes.channels.threads.me(channelId))\n },\n\n async publishMessage(channelId, messageId) {\n return await rest.post<DiscordMessage>(rest.routes.channels.crosspost(channelId, messageId))\n },\n\n async removeRole(guildId, userId, roleId, reason) {\n await rest.delete(rest.routes.guilds.roles.member(guildId, userId, roleId), { reason })\n },\n\n async removeThreadMember(channelId, userId) {\n await rest.delete(rest.routes.channels.threads.user(channelId, userId))\n },\n\n async sendFollowupMessage(token, options) {\n return await rest.post(rest.routes.webhooks.webhook(rest.applicationId, token), {\n body: options,\n files: options.files,\n unauthorized: true,\n })\n },\n\n async sendInteractionResponse(interactionId, token, options) {\n return await rest.post(rest.routes.interactions.responses.callback(interactionId, token), {\n body: options,\n files: options.data?.files,\n runThroughQueue: false,\n unauthorized: true,\n })\n },\n\n async sendMessage(channelId, body) {\n return await rest.post<DiscordMessage>(rest.routes.channels.messages(channelId), { body, files: body.files })\n },\n\n async startThreadWithMessage(channelId, messageId, body, reason) {\n return await rest.post<DiscordChannel>(rest.routes.channels.threads.message(channelId, messageId), { body, reason })\n },\n\n async startThreadWithoutMessage(channelId, body, reason) {\n return await rest.post<DiscordChannel>(rest.routes.channels.threads.all(channelId), { body, reason })\n },\n\n async syncGuildTemplate(guildId) {\n return await rest.put<DiscordTemplate>(rest.routes.guilds.templates.all(guildId))\n },\n\n async banMember(guildId, userId, body, reason) {\n await rest.put<void>(rest.routes.guilds.members.ban(guildId, userId), { body, reason })\n },\n\n async editBotMember(guildId, body, reason) {\n return await rest.patch<DiscordMember>(rest.routes.guilds.members.bot(guildId), { body, reason })\n },\n\n async editMember(guildId, userId, body, reason) {\n return await rest.patch<DiscordMemberWithUser>(rest.routes.guilds.members.member(guildId, userId), { body, reason })\n },\n\n async getMember(guildId, userId) {\n return await rest.get<DiscordMemberWithUser>(rest.routes.guilds.members.member(guildId, userId))\n },\n\n async getMembers(guildId, options) {\n return await rest.get<DiscordMemberWithUser[]>(rest.routes.guilds.members.members(guildId, options))\n },\n\n async kickMember(guildId, userId, reason) {\n await rest.delete(rest.routes.guilds.members.member(guildId, userId), {\n reason,\n })\n },\n\n async pinMessage(channelId, messageId, reason) {\n await rest.put(rest.routes.channels.pin(channelId, messageId), { reason })\n },\n\n async pruneMembers(guildId, body, reason) {\n return await rest.post<{ pruned: number | null }>(rest.routes.guilds.members.prune(guildId), { body, reason })\n },\n\n async searchMembers(guildId, query, options) {\n return await rest.get<DiscordMemberWithUser[]>(rest.routes.guilds.members.search(guildId, query, options))\n },\n\n async unbanMember(guildId, userId, reason) {\n await rest.delete(rest.routes.guilds.members.ban(guildId, userId), { reason })\n },\n\n async unpinMessage(channelId, messageId, reason) {\n await rest.delete(rest.routes.channels.pin(channelId, messageId), { reason })\n },\n\n async triggerTypingIndicator(channelId) {\n await rest.post(rest.routes.channels.typing(channelId))\n },\n\n async upsertGlobalApplicationCommands(body) {\n return await rest.put<DiscordApplicationCommand[]>(rest.routes.interactions.commands.commands(rest.applicationId), { body })\n },\n\n async upsertGuildApplicationCommands(guildId, body) {\n return await rest.put<DiscordApplicationCommand[]>(rest.routes.interactions.commands.guilds.all(rest.applicationId, guildId), { body })\n },\n }\n\n return rest\n}\n\nenum HttpResponseCode {\n /** Minimum value of a code in oder to consider that it was successful. */\n Success = 200,\n /** Request completed successfully, but Discord returned an empty body. */\n NoContent = 204,\n /** Minimum value of a code in order to consider that something went wrong. */\n Error = 400,\n /** This request got rate limited. */\n TooManyRequests = 429,\n}\n"],"names":["InteractionResponseTypes","calculateBits","camelize","camelToSnakeCase","delay","getBotIdFromToken","logger","processReactionString","urlToBase64","fetch","createInvalidRequestBucket","Queue","createRoutes","version","DISCORD_API_VERSION","DISCORD_API_URL","AUDIT_LOG_REASON_HEADER","RATE_LIMIT_REMAINING_HEADER","RATE_LIMIT_RESET_AFTER_HEADER","RATE_LIMIT_GLOBAL_HEADER","RATE_LIMIT_BUCKET_HEADER","RATE_LIMIT_LIMIT_HEADER","RATE_LIMIT_SCOPE_HEADER","createRestManager","options","applicationId","BigInt","token","undefined","Error","baseUrl","proxy","rest","authorization","deleteQueueDelay","globallyRateLimited","invalidBucket","isProxied","startsWith","maxRetryCount","Infinity","processingRateLimitedPaths","queues","Map","rateLimitedPaths","routes","checkRateLimits","url","ratelimited","get","global","now","Date","resetTimestamp","changeToDiscordFormat","obj","Array","isArray","map","item","newObj","key","Object","keys","includes","default_member_permissions","toString","createRequestBody","method","headers","unauthorized","reason","encodeURIComponent","body","files","form","FormData","i","length","append","blob","name","JSON","stringify","assign","processRateLimitedPaths","value","entries","delete","size","setTimeout","processHeaders","rateLimited","remaining","retryAfter","reset","Number","bucketId","limit","handleCompletedRequest","interval","max","set","globalReset","sendRequest","route","payload","requestBodyOptions","debug","response","status","statusText","simplifyUrl","reject","ok","text","retryCount","error","resetAfter","arrayBuffer","retryRequest","resolve","parts","split","secondLastPart","splice","push","join","processRequest","request","runThroughQueue","queue","makeRequest","bucketQueue","result","err","json","catch","message","Promise","data","parse","post","patch","put","addReaction","channelId","messageId","reaction","channels","reactions","bot","addReactions","ordered","all","addRole","guildId","userId","roleId","guilds","roles","member","addThreadMember","threads","user","createAutomodRule","automod","rules","createChannel","createEmoji","emojis","createGlobalApplicationCommand","interactions","commands","createGuild","createGuildApplicationCommand","createGuildFromTemplate","templateCode","icon","templates","code","createGuildSticker","file","description","tags","stickers","createGuildTemplate","createForumThread","forum","createInvite","invites","createRole","createScheduledEvent","events","createStageInstance","stages","createWebhook","webhooks","avatar","deleteAutomodRule","ruleId","rule","deleteChannel","channel","deleteChannelPermissionOverride","overwriteId","overwrite","deleteEmoji","id","emoji","deleteFollowupMessage","responses","deleteGlobalApplicationCommand","commandId","command","deleteGuild","guild","deleteGuildApplicationCommand","one","deleteGuildSticker","stickerId","sticker","deleteGuildTemplate","deleteIntegration","integrationId","integration","deleteInvite","inviteCode","invite","deleteMessage","deleteMessages","messageIds","bulk","messages","slice","deleteOriginalInteractionResponse","original","deleteOwnReaction","deleteReactionsAll","deleteReactionsEmoji","deleteRole","deleteScheduledEvent","eventId","event","deleteStageInstance","stage","deleteUserReaction","deleteWebhook","webhookId","deleteWebhookMessage","deleteWebhookWithToken","webhook","editApplicationCommandPermissions","bearerToken","permissions","permission","editAutomodRule","editBotProfile","botAvatarURL","userBot","username","trim","editChannel","editChannelPermissionOverrides","editChannelPositions","editEmoji","editFollowupMessage","editGlobalApplicationCommand","editGuild","editGuildApplicationCommand","editGuildMfaLevel","mfaLevel","mfa","level","editGuildSticker","editGuildTemplate","editMessage","editOriginalInteractionResponse","editOriginalWebhookMessage","type","UpdateMessage","editOwnVoiceState","voice","request_to_speak_timestamp","requestToSpeakTimestamp","toISOString","editScheduledEvent","editRole","editRolePositions","editStageInstance","topic","editUserVoiceState","editWebhook","editWebhookMessage","editWebhookWithToken","editWelcomeScreen","welcome","editWidgetSettings","widget","executeWebhook","followAnnouncement","sourceChannelId","targetChannelId","follow","webhook_channel_id","getActiveThreads","active","getApplicationCommandPermission","getApplicationCommandPermissions","getApplicationInfo","oauth2Application","getAuditLog","auditlogs","getAutomodRule","getAutomodRules","getAvailableVoiceRegions","regions","getBan","members","ban","getBans","bans","getChannel","getChannelInvites","getChannels","getChannelWebhooks","getDmChannel","dm","recipient_id","getEmoji","emojiId","getEmojis","getFollowupMessage","getGatewayBot","gatewayBot","getGlobalApplicationCommand","getGlobalApplicationCommands","getGuild","counts","getGuildApplicationCommand","getGuildApplicationCommands","getGuildPreview","preview","getGuildTemplate","getGuildTemplates","getGuildWebhooks","getIntegrations","integrations","getInvite","getInvites","getMessage","getMessages","getNitroStickerPacks","nitroStickerPacks","getOriginalInteractionResponse","getPinnedMessages","pins","getPrivateArchivedThreads","private","getPrivateJoinedArchivedThreads","joined","getPruneCount","prune","getPublicArchivedThreads","public","getRoles","getScheduledEvent","withUserCount","getScheduledEvents","getScheduledEventUsers","users","getSessionInfo","getStageInstance","getSticker","getGuildSticker","getGuildStickers","getThreadMember","getThreadMembers","getReactions","getUser","getVanityUrl","vanity","getVoiceRegions","getWebhook","getWebhookMessage","getWebhookWithToken","getWelcomeScreen","getWidget","widgetJson","getWidgetSettings","joinThread","me","leaveGuild","leave","leaveThread","publishMessage","crosspost","removeRole","removeThreadMember","sendFollowupMessage","sendInteractionResponse","interactionId","callback","sendMessage","startThreadWithMessage","startThreadWithoutMessage","syncGuildTemplate","banMember","editBotMember","editMember","getMember","getMembers","kickMember","pinMessage","pin","pruneMembers","searchMembers","query","search","unbanMember","unpinMessage","triggerTypingIndicator","typing","upsertGlobalApplicationCommands","upsertGuildApplicationCommands","HttpResponseCode","Success","NoContent","TooManyRequests"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/manager.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/restrict-template-expressions */\n/* eslint-disable no-const-assign */\nimport { calculateBits, camelToSnakeCase, camelize, delay, getBotIdFromToken, logger, processReactionString, urlToBase64 } from '@discordeno/utils'\n\nimport { createInvalidRequestBucket } from './invalidBucket.js'\nimport { Queue } from './queue.js'\n\nimport {\n InteractionResponseTypes,\n type BigString,\n type Camelize,\n type DiscordApplication,\n type DiscordApplicationCommand,\n type DiscordAuditLog,\n type DiscordAutoModerationRule,\n type DiscordBan,\n type DiscordChannel,\n type DiscordEmoji,\n type DiscordFollowedChannel,\n type DiscordGetGatewayBot,\n type DiscordGuild,\n type DiscordGuildApplicationCommandPermissions,\n type DiscordGuildPreview,\n type DiscordGuildWidget,\n type DiscordGuildWidgetSettings,\n type DiscordIntegration,\n type DiscordInvite,\n type DiscordInviteMetadata,\n type DiscordListActiveThreads,\n type DiscordListArchivedThreads,\n type DiscordMember,\n type DiscordMemberWithUser,\n type DiscordMessage,\n type DiscordPrunedCount,\n type DiscordRole,\n type DiscordScheduledEvent,\n type DiscordStageInstance,\n type DiscordSticker,\n type DiscordStickerPack,\n type DiscordTemplate,\n type DiscordThreadMember,\n type DiscordUser,\n type DiscordVanityUrl,\n type DiscordVoiceRegion,\n type DiscordWebhook,\n type DiscordWelcomeScreen,\n type MfaLevels,\n type ModifyGuildTemplate,\n} from '@discordeno/types'\nimport { createRoutes } from './routes.js'\nimport type { CreateRequestBodyOptions, CreateRestManagerOptions, RestManager, SendRequestOptions } from './types.js'\n\n// TODO: make dynamic based on package.json file\nconst version = '19.0.0-alpha.1'\n\nexport const DISCORD_API_VERSION = 10\nexport const DISCORD_API_URL = 'https://discord.com/api'\n\nexport const AUDIT_LOG_REASON_HEADER = 'x-audit-log-reason'\nexport const RATE_LIMIT_REMAINING_HEADER = 'x-ratelimit-remaining'\nexport const RATE_LIMIT_RESET_AFTER_HEADER = 'x-ratelimit-reset-after'\nexport const RATE_LIMIT_GLOBAL_HEADER = 'x-ratelimit-global'\nexport const RATE_LIMIT_BUCKET_HEADER = 'x-ratelimit-bucket'\nexport const RATE_LIMIT_LIMIT_HEADER = 'x-ratelimit-limit'\nexport const RATE_LIMIT_SCOPE_HEADER = 'x-ratelimit-scope'\n\nexport function createRestManager(options: CreateRestManagerOptions): RestManager {\n const applicationId = options.applicationId ? BigInt(options.applicationId) : options.token ? getBotIdFromToken(options.token) : undefined\n if (!applicationId) {\n throw new Error(\n '`applicationId` was not provided and was not able to extract the id from the bots token. Please explicitly pass `applicationId` to the rest manager.',\n )\n }\n\n const baseUrl = options.proxy?.baseUrl ?? DISCORD_API_URL\n\n const rest: RestManager = {\n applicationId,\n authorization: options.proxy?.authorization,\n baseUrl,\n deleteQueueDelay: 60000,\n globallyRateLimited: false,\n invalidBucket: createInvalidRequestBucket({}),\n isProxied: !baseUrl.startsWith(DISCORD_API_URL),\n maxRetryCount: Infinity,\n processingRateLimitedPaths: false,\n queues: new Map(),\n rateLimitedPaths: new Map(),\n token: options.token,\n version: options.version ?? DISCORD_API_VERSION,\n\n routes: createRoutes(),\n\n checkRateLimits(url) {\n const ratelimited = rest.rateLimitedPaths.get(url)\n const global = rest.rateLimitedPaths.get('global')\n const now = Date.now()\n\n if (ratelimited && now < ratelimited.resetTimestamp) {\n return ratelimited.resetTimestamp - now\n }\n\n if (global && now < global.resetTimestamp) {\n return global.resetTimestamp - now\n }\n\n return false\n },\n\n changeToDiscordFormat(obj: any): any {\n if (obj === null) return null\n\n if (typeof obj === 'object') {\n if (Array.isArray(obj)) {\n return obj.map((item) => rest.changeToDiscordFormat(item))\n }\n\n const newObj: any = {}\n\n for (const key of Object.keys(obj)) {\n // Keys that dont require snake casing\n if (['permissions', 'allow', 'deny'].includes(key) && obj[key] !== undefined) {\n newObj[key] = calculateBits(obj[key])\n continue\n }\n\n if (key === 'defaultMemberPermissions' && obj[key] !== undefined) {\n newObj.default_member_permissions = calculateBits(obj[key])\n continue\n }\n\n newObj[camelToSnakeCase(key)] = rest.changeToDiscordFormat(obj[key])\n }\n\n return newObj\n }\n\n if (typeof obj === 'bigint') return obj.toString()\n\n return obj\n },\n\n createRequestBody(method, options) {\n const headers: Record<string, string> = {\n 'user-agent': `DiscordBot (https://github.com/discordeno/discordeno, v${version})`,\n }\n\n if (options?.unauthorized !== false) headers.authorization = `Bot ${rest.token}`\n\n // IF A REASON IS PROVIDED ENCODE IT IN HEADERS\n if (options?.reason !== undefined) {\n headers[AUDIT_LOG_REASON_HEADER] = encodeURIComponent(options?.reason)\n }\n\n let body: string | FormData | undefined\n\n // TODO: check if we need to add specific check for GET method\n // Since GET does not allow bodies\n\n // Have to check for attachments first, since body then has to be send in a different way.\n if (options?.files !== undefined) {\n const form = new FormData()\n for (let i = 0; i < options.files.length; ++i) {\n form.append(`file${i}`, options.files[i].blob, options.files[i].name)\n }\n\n form.append('payload_json', JSON.stringify({ ...options.body, files: undefined }))\n\n body = form\n\n // No need to set the `content-type` header since `fetch` does that automatically for us when we use a `FormData` object.\n } else if (options?.body !== undefined) {\n if (options.body instanceof FormData) {\n body = options.body\n // No need to set the `content-type` header since `fetch` does that automatically for us when we use a `FormData` object.\n } else {\n body = JSON.stringify(rest.changeToDiscordFormat(options.body))\n headers['content-type'] = `application/json`\n }\n }\n\n // SOMETIMES SPECIAL HEADERS (E.G. CUSTOM AUTHORIZATION) NEED TO BE USED\n if (options?.headers) {\n Object.assign(headers, options.headers)\n }\n\n return {\n body,\n headers,\n method,\n }\n },\n\n processRateLimitedPaths() {\n const now = Date.now()\n\n for (const [key, value] of rest.rateLimitedPaths.entries()) {\n // rest.debug(\n // `[REST - processRateLimitedPaths] Running for of loop. ${\n // value.resetTimestamp - now\n // }`\n // )\n // If the time has not reached cancel\n if (value.resetTimestamp > now) continue\n\n // Rate limit is over, delete the rate limiter\n rest.rateLimitedPaths.delete(key)\n // If it was global, also mark the global value as false\n if (key === 'global') rest.globallyRateLimited = false\n }\n\n // ALL PATHS ARE CLEARED CAN CANCEL OUT!\n if (rest.rateLimitedPaths.size === 0) {\n rest.processingRateLimitedPaths = false\n } else {\n rest.processingRateLimitedPaths = true\n // RECHECK IN 1 SECOND\n setTimeout(() => {\n // rest.debug('[REST - processRateLimitedPaths] Running setTimeout.')\n rest.processRateLimitedPaths()\n }, 1000)\n }\n },\n\n /** Processes the rate limit headers and determines if it needs to be rate limited and returns the bucket id if available */\n processHeaders(url, headers) {\n let rateLimited = false\n\n // GET ALL NECESSARY HEADERS\n const remaining = headers.get(RATE_LIMIT_REMAINING_HEADER)\n const retryAfter = headers.get(RATE_LIMIT_RESET_AFTER_HEADER)\n const reset = Date.now() + Number(retryAfter) * 1000\n const global = headers.get(RATE_LIMIT_GLOBAL_HEADER)\n // undefined override null needed for typings\n const bucketId = headers.get(RATE_LIMIT_BUCKET_HEADER) ?? undefined\n const limit = headers.get(RATE_LIMIT_LIMIT_HEADER)\n\n rest.queues.get(url)?.handleCompletedRequest({\n remaining: remaining ? Number(remaining) : undefined,\n interval: retryAfter ? Number(retryAfter) * 1000 : undefined,\n max: limit ? Number(limit) : undefined,\n })\n\n // IF THERE IS NO REMAINING RATE LIMIT, MARK IT AS RATE LIMITED\n if (remaining === '0') {\n rateLimited = true\n\n // SAVE THE URL AS LIMITED, IMPORTANT FOR NEW REQUESTS BY USER WITHOUT BUCKET\n rest.rateLimitedPaths.set(url, {\n url,\n resetTimestamp: reset,\n bucketId,\n })\n\n // SAVE THE BUCKET AS LIMITED SINCE DIFFERENT URLS MAY SHARE A BUCKET\n if (bucketId) {\n rest.rateLimitedPaths.set(bucketId, {\n url,\n resetTimestamp: reset,\n bucketId,\n })\n }\n }\n\n // IF THERE IS NO REMAINING GLOBAL LIMIT, MARK IT RATE LIMITED GLOBALLY\n if (global) {\n const retryAfter = headers.get('retry-after')\n const globalReset = Date.now() + Number(retryAfter) * 1000\n // rest.debug(\n // `[REST = Globally Rate Limited] URL: ${url} | Global Rest: ${globalReset}`\n // )\n rest.globallyRateLimited = true\n rateLimited = true\n\n setTimeout(() => {\n rest.globallyRateLimited = false\n }, globalReset)\n\n rest.rateLimitedPaths.set('global', {\n url: 'global',\n resetTimestamp: globalReset,\n bucketId,\n })\n\n if (bucketId) {\n rest.rateLimitedPaths.set(bucketId, {\n url: 'global',\n resetTimestamp: globalReset,\n bucketId,\n })\n }\n }\n\n if (rateLimited && !rest.processingRateLimitedPaths) {\n rest.processRateLimitedPaths()\n }\n return rateLimited ? bucketId : undefined\n },\n\n async sendRequest(options) {\n const url = `${rest.baseUrl}/v${rest.version}${options.route}`\n const payload = rest.createRequestBody(options.method, options.requestBodyOptions)\n\n logger.debug(`sending request to ${url}`, 'with payload:', { ...payload, headers: { ...payload.headers, authorization: 'Bot tokenhere' } })\n const response = await fetch(url, payload).catch(async (error) => {\n logger.error(error)\n // Mark request and completed\n rest.invalidBucket.handleCompletedRequest(999, false)\n options.reject({\n ok: false,\n status: 999,\n error: 'Possible network or request shape issue occurred. If this is rare, its a network glitch. If it occurs a lot something is wrong.',\n })\n throw error\n })\n logger.debug(`request fetched from ${url} with status ${response.status} & ${response.statusText}`)\n\n // Mark request and completed\n rest.invalidBucket.handleCompletedRequest(response.status, response.headers.get(RATE_LIMIT_SCOPE_HEADER) === 'shared')\n\n // Set the bucket id if it was available on the headers\n const bucketId = rest.processHeaders(rest.simplifyUrl(options.route, options.method), response.headers)\n if (bucketId) options.bucketId = bucketId\n\n if (response.status < HttpResponseCode.Success || response.status >= HttpResponseCode.Error) {\n logger.debug(`Request to ${url} failed.`)\n\n if (response.status !== HttpResponseCode.TooManyRequests) {\n options.reject({ ok: false, status: response.status, body: await response.text() })\n return\n }\n\n logger.debug(`Request to ${url} was ratelimited.`)\n // Too many attempts, get rid of request from queue.\n if (options.retryCount >= rest.maxRetryCount) {\n logger.debug(`Request to ${url} exceeded the maximum allowed retries.`, 'with payload:', payload)\n // rest.debug(`[REST - RetriesMaxed] ${JSON.stringify(options)}`)\n options.reject({\n ok: false,\n status: response.status,\n error: 'The request was rate limited and it maxed out the retries limit.',\n })\n\n return\n }\n\n options.retryCount += 1\n\n const resetAfter = response.headers.get(RATE_LIMIT_RESET_AFTER_HEADER)\n if (resetAfter) await delay(Number(resetAfter) * 1000)\n // process the response to prevent mem leak\n await response.arrayBuffer()\n\n return await options.retryRequest?.(options)\n }\n\n // Discord sometimes sends no response with no content.\n options.resolve({ ok: true, status: response.status, body: response.status === HttpResponseCode.NoContent ? undefined : await response.text() })\n },\n\n simplifyUrl(url, method) {\n const parts = url.split('/')\n const secondLastPart = parts[parts.length - 2]\n\n if (secondLastPart === 'channels' || secondLastPart === 'guilds') {\n return url\n }\n\n if (secondLastPart === 'reactions' || parts[parts.length - 1] === '@me') {\n parts.splice(-2)\n parts.push('reactions')\n } else {\n parts.splice(-1)\n parts.push('x')\n }\n\n if (parts[parts.length - 3] === 'reactions') {\n parts.splice(-2)\n }\n\n if (method === 'DELETE' && secondLastPart === 'messages') {\n return `D${parts.join('/')}`\n }\n\n return parts.join('/')\n },\n\n async processRequest(request: SendRequestOptions) {\n const url = rest.simplifyUrl(request.route, request.method)\n\n if (request.runThroughQueue === false) {\n await rest.sendRequest(request)\n\n return\n }\n\n const queue = rest.queues.get(url)\n\n if (queue !== undefined) {\n queue.makeRequest(request)\n } else {\n // CREATES A NEW QUEUE\n const bucketQueue = new Queue(rest, { url, deleteQueueDelay: rest.deleteQueueDelay })\n\n // Add request to queue\n bucketQueue.makeRequest(request)\n // Save queue\n rest.queues.set(url, bucketQueue)\n }\n },\n\n async makeRequest(method, route, options) {\n if (rest.isProxied) {\n if (rest.authorization !== undefined) {\n options ??= {}\n options.headers ??= {}\n options.headers.authorization = rest.authorization\n }\n\n const result = await fetch(`${rest.baseUrl}/v${rest.version}${route}`, rest.createRequestBody(method, options))\n\n if (!result.ok) {\n const err = (await result.json().catch(() => {})) as Record<string, any>\n // Legacy Handling to not break old code or when body is missing\n if (!err?.body) throw new Error(`Error: ${err.message ?? result.statusText}`)\n throw new Error(JSON.stringify(err))\n }\n\n return result.status !== 204 ? await result.json() : undefined\n }\n\n // eslint-disable-next-line no-async-promise-executor\n return await new Promise(async (resolve, reject) => {\n const payload: SendRequestOptions = {\n route,\n method,\n requestBodyOptions: options,\n retryCount: 0,\n retryRequest: async function (payload: SendRequestOptions) {\n await rest.processRequest(payload)\n },\n resolve: (data) => {\n resolve(data.status !== 204 ? JSON.parse(data.body ?? '{}') : undefined)\n },\n reject,\n runThroughQueue: options?.runThroughQueue,\n }\n\n await rest.processRequest(payload)\n })\n },\n\n async get<T = Record<string, unknown>>(url: string, options?: Omit<CreateRequestBodyOptions, 'body' | 'method'>) {\n return camelize(await rest.makeRequest('GET', url, options)) as Camelize<T>\n },\n\n async post<T = Record<string, unknown>>(url: string, options?: Omit<CreateRequestBodyOptions, 'body' | 'method'>) {\n return camelize(await rest.makeRequest('POST', url, options)) as Camelize<T>\n },\n\n async delete(url: string, options?: Omit<CreateRequestBodyOptions, 'body' | 'method'>) {\n camelize(await rest.makeRequest('DELETE', url, options))\n },\n\n async patch<T = Record<string, unknown>>(url: string, options?: Omit<CreateRequestBodyOptions, 'body' | 'method'>) {\n return camelize(await rest.makeRequest('PATCH', url, options)) as Camelize<T>\n },\n\n async put<T = void>(url: string, options?: Omit<CreateRequestBodyOptions, 'body' | 'method'>) {\n return camelize(await rest.makeRequest('PUT', url, options)) as Camelize<T>\n },\n\n async addReaction(channelId, messageId, reaction) {\n reaction = processReactionString(reaction)\n\n await rest.put(rest.routes.channels.reactions.bot(channelId, messageId, reaction))\n },\n\n async addReactions(channelId, messageId, reactions, ordered = false) {\n if (!ordered) {\n await Promise.all(\n reactions.map(async (reaction) => {\n await rest.addReaction(channelId, messageId, reaction)\n }),\n )\n return\n }\n\n for (const reaction of reactions) {\n await rest.addReaction(channelId, messageId, reaction)\n }\n },\n\n async addRole(guildId, userId, roleId, reason) {\n await rest.put(rest.routes.guilds.roles.member(guildId, userId, roleId), { reason })\n },\n\n async addThreadMember(channelId, userId) {\n await rest.put(rest.routes.channels.threads.user(channelId, userId))\n },\n\n async createAutomodRule(guildId, body, reason) {\n return await rest.post<DiscordAutoModerationRule>(rest.routes.guilds.automod.rules(guildId), { body, reason })\n },\n\n async createChannel(guildId, body, reason) {\n return await rest.post<DiscordChannel>(rest.routes.guilds.channels(guildId), { body, reason })\n },\n\n async createEmoji(guildId, body, reason) {\n return await rest.post<DiscordEmoji>(rest.routes.guilds.emojis(guildId), { body, reason })\n },\n\n async createGlobalApplicationCommand(body) {\n return await rest.post<DiscordApplicationCommand>(rest.routes.interactions.commands.commands(rest.applicationId), { body })\n },\n\n async createGuild(body) {\n return await rest.post<DiscordGuild>(rest.routes.guilds.all(), { body })\n },\n\n async createGuildApplicationCommand(body, guildId) {\n return await rest.post<DiscordApplicationCommand>(rest.routes.interactions.commands.guilds.all(rest.applicationId, guildId), { body })\n },\n\n async createGuildFromTemplate(templateCode, body) {\n if (body.icon) {\n body.icon = await urlToBase64(body.icon)\n }\n\n return await rest.post<DiscordGuild>(rest.routes.guilds.templates.code(templateCode), { body })\n },\n\n async createGuildSticker(guildId, options, reason) {\n const form = new FormData()\n form.append('file', options.file.blob, options.file.name)\n form.append('name', options.name)\n form.append('description', options.description)\n form.append('tags', options.tags)\n\n return await rest.post<DiscordSticker>(rest.routes.guilds.stickers(guildId), { body: form, reason })\n },\n\n async createGuildTemplate(guildId, body) {\n return await rest.post<DiscordTemplate>(rest.routes.guilds.templates.all(guildId), { body })\n },\n\n async createForumThread(channelId, body, reason) {\n return await rest.post<DiscordChannel>(rest.routes.channels.forum(channelId), { body, files: body.files, reason })\n },\n\n async createInvite(channelId, body = {}, reason) {\n return await rest.post<DiscordInvite>(rest.routes.channels.invites(channelId), { body, reason })\n },\n\n async createRole(guildId, body, reason) {\n return await rest.post<DiscordRole>(rest.routes.guilds.roles.all(guildId), { body, reason })\n },\n\n async createScheduledEvent(guildId, body, reason) {\n return await rest.post<DiscordScheduledEvent>(rest.routes.guilds.events.events(guildId), { body, reason })\n },\n\n async createStageInstance(body, reason) {\n return await rest.post<DiscordStageInstance>(rest.routes.channels.stages(), { body, reason })\n },\n\n async createWebhook(channelId, options, reason) {\n return await rest.post<DiscordWebhook>(rest.routes.channels.webhooks(channelId), {\n body: {\n name: options.name,\n avatar: options.avatar ? await urlToBase64(options.avatar) : undefined,\n },\n reason,\n })\n },\n\n async deleteAutomodRule(guildId, ruleId, reason) {\n await rest.delete(rest.routes.guilds.automod.rule(guildId, ruleId), { reason })\n },\n\n async deleteChannel(channelId, reason) {\n await rest.delete(rest.routes.channels.channel(channelId), {\n reason,\n })\n },\n\n async deleteChannelPermissionOverride(channelId, overwriteId, reason) {\n await rest.delete(rest.routes.channels.overwrite(channelId, overwriteId), { reason })\n },\n\n async deleteEmoji(guildId, id, reason) {\n await rest.delete(rest.routes.guilds.emoji(guildId, id), { reason })\n },\n\n async deleteFollowupMessage(token, messageId) {\n await rest.delete(rest.routes.interactions.responses.message(rest.applicationId, token, messageId), { unauthorized: true })\n },\n\n async deleteGlobalApplicationCommand(commandId) {\n await rest.delete(rest.routes.interactions.commands.command(rest.applicationId, commandId))\n },\n\n async deleteGuild(guildId) {\n await rest.delete(rest.routes.guilds.guild(guildId))\n },\n\n async deleteGuildApplicationCommand(commandId, guildId) {\n await rest.delete(rest.routes.interactions.commands.guilds.one(rest.applicationId, guildId, commandId))\n },\n\n async deleteGuildSticker(guildId, stickerId, reason) {\n await rest.delete(rest.routes.guilds.sticker(guildId, stickerId), { reason })\n },\n\n async deleteGuildTemplate(guildId, templateCode) {\n await rest.delete(rest.routes.guilds.templates.guild(guildId, templateCode))\n },\n\n async deleteIntegration(guildId, integrationId, reason) {\n await rest.delete(rest.routes.guilds.integration(guildId, integrationId), { reason })\n },\n\n async deleteInvite(inviteCode, reason) {\n await rest.delete(rest.routes.guilds.invite(inviteCode), { reason })\n },\n\n async deleteMessage(channelId, messageId, reason) {\n await rest.delete(rest.routes.channels.message(channelId, messageId), { reason })\n },\n\n async deleteMessages(channelId, messageIds, reason) {\n await rest.post(rest.routes.channels.bulk(channelId), {\n body: {\n messages: messageIds.slice(0, 100).map((id) => id.toString()),\n },\n reason,\n })\n },\n\n async deleteOriginalInteractionResponse(token) {\n await rest.delete(rest.routes.interactions.responses.original(rest.applicationId, token), { unauthorized: true })\n },\n\n async deleteOwnReaction(channelId, messageId, reaction) {\n reaction = processReactionString(reaction)\n\n await rest.delete(rest.routes.channels.reactions.bot(channelId, messageId, reaction))\n },\n\n async deleteReactionsAll(channelId, messageId) {\n await rest.delete(rest.routes.channels.reactions.all(channelId, messageId))\n },\n\n async deleteReactionsEmoji(channelId, messageId, reaction) {\n reaction = processReactionString(reaction)\n\n await rest.delete(rest.routes.channels.reactions.emoji(channelId, messageId, reaction))\n },\n\n async deleteRole(guildId, roleId, reason) {\n await rest.delete(rest.routes.guilds.roles.one(guildId, roleId), { reason })\n },\n\n async deleteScheduledEvent(guildId, eventId) {\n await rest.delete(rest.routes.guilds.events.event(guildId, eventId))\n },\n\n async deleteStageInstance(channelId, reason) {\n await rest.delete(rest.routes.channels.stage(channelId), { reason })\n },\n\n async deleteUserReaction(channelId, messageId, userId, reaction) {\n reaction = processReactionString(reaction)\n\n await rest.delete(rest.routes.channels.reactions.user(channelId, messageId, reaction, userId))\n },\n\n async deleteWebhook(webhookId, reason) {\n await rest.delete(rest.routes.webhooks.id(webhookId), { reason })\n },\n\n async deleteWebhookMessage(webhookId, token, messageId, options) {\n await rest.delete(rest.routes.webhooks.message(webhookId, token, messageId, options))\n },\n\n async deleteWebhookWithToken(webhookId, token) {\n await rest.delete(rest.routes.webhooks.webhook(webhookId, token))\n },\n\n async editApplicationCommandPermissions(guildId, commandId, bearerToken, permissions) {\n return await rest.put<DiscordGuildApplicationCommandPermissions>(\n rest.routes.interactions.commands.permission(rest.applicationId, guildId, commandId),\n {\n body: {\n permissions,\n },\n headers: { authorization: `Bearer ${bearerToken}` },\n },\n )\n },\n\n async editAutomodRule(guildId, ruleId, body, reason) {\n return await rest.patch<DiscordAutoModerationRule>(rest.routes.guilds.automod.rule(guildId, ruleId), { body, reason })\n },\n\n async editBotProfile(options) {\n const avatar = options?.botAvatarURL ? await urlToBase64(options?.botAvatarURL) : options?.botAvatarURL\n\n return await rest.patch<DiscordUser>(rest.routes.userBot(), {\n body: {\n username: options.username?.trim(),\n avatar,\n },\n })\n },\n\n async editChannel(channelId, body, reason) {\n return await rest.patch<DiscordChannel>(rest.routes.channels.channel(channelId), { body, reason })\n },\n\n async editChannelPermissionOverrides(channelId, body, reason) {\n await rest.put(rest.routes.channels.overwrite(channelId, body.id), { body, reason })\n },\n\n async editChannelPositions(guildId, body) {\n await rest.patch(rest.routes.guilds.channels(guildId), { body })\n },\n\n async editEmoji(guildId, id, body, reason) {\n return await rest.patch<DiscordEmoji>(rest.routes.guilds.emoji(guildId, id), { body, reason })\n },\n\n async editFollowupMessage(token, messageId, body) {\n return await rest.patch<DiscordMessage>(rest.routes.interactions.responses.message(rest.applicationId, token, messageId), {\n body,\n files: body.files,\n unauthorized: true,\n })\n },\n\n async editGlobalApplicationCommand(commandId, body) {\n return await rest.patch<DiscordApplicationCommand>(rest.routes.interactions.commands.command(rest.applicationId, commandId), { body })\n },\n\n async editGuild(guildId, body, reason) {\n return await rest.patch<DiscordGuild>(rest.routes.guilds.guild(guildId), { body, reason })\n },\n\n async editGuildApplicationCommand(commandId, guildId, body) {\n return await rest.patch<DiscordApplicationCommand>(rest.routes.interactions.commands.guilds.one(rest.applicationId, guildId, commandId), {\n body,\n })\n },\n\n async editGuildMfaLevel(guildId: BigString, mfaLevel: MfaLevels, reason?: string): Promise<void> {\n await rest.post(rest.routes.guilds.mfa(guildId), { body: { level: mfaLevel }, reason })\n },\n\n async editGuildSticker(guildId, stickerId, body, reason) {\n return await rest.patch<DiscordSticker>(rest.routes.guilds.sticker(guildId, stickerId), { body, reason })\n },\n\n async editGuildTemplate(guildId, templateCode: string, body: ModifyGuildTemplate): Promise<Camelize<DiscordTemplate>> {\n return await rest.patch<DiscordTemplate>(rest.routes.guilds.templates.guild(guildId, templateCode), { body })\n },\n\n async editMessage(channelId, messageId, body) {\n return await rest.patch<DiscordMessage>(rest.routes.channels.message(channelId, messageId), { body })\n },\n\n async editOriginalInteractionResponse(token, body) {\n return await rest.patch<DiscordMessage>(rest.routes.interactions.responses.original(rest.applicationId, token), {\n body,\n files: body.files,\n })\n },\n\n async editOriginalWebhookMessage(webhookId, token, options) {\n return await rest.patch<DiscordMessage>(rest.routes.webhooks.original(webhookId, token, options), {\n body: {\n type: InteractionResponseTypes.UpdateMessage,\n data: options,\n },\n files: options.files,\n unauthorized: true,\n })\n },\n\n async editOwnVoiceState(guildId, options) {\n await rest.patch(rest.routes.guilds.voice(guildId), {\n body: {\n ...options,\n request_to_speak_timestamp: options.requestToSpeakTimestamp\n ? new Date(options.requestToSpeakTimestamp).toISOString()\n : options.requestToSpeakTimestamp,\n },\n })\n },\n\n async editScheduledEvent(guildId, eventId, body, reason) {\n return await rest.patch<DiscordScheduledEvent>(rest.routes.guilds.events.event(guildId, eventId), { body, reason })\n },\n\n async editRole(guildId, roleId, body, reason) {\n return await rest.patch<DiscordRole>(rest.routes.guilds.roles.one(guildId, roleId), { body, reason })\n },\n\n async editRolePositions(guildId, body, reason) {\n return await rest.patch<DiscordRole[]>(rest.routes.guilds.roles.all(guildId), { body, reason })\n },\n\n async editStageInstance(channelId, topic, reason?: string) {\n return await rest.patch<DiscordStageInstance>(rest.routes.channels.stage(channelId), { body: { topic }, reason })\n },\n\n async editUserVoiceState(guildId, options) {\n await rest.patch(rest.routes.guilds.voice(guildId, options.userId), { body: options })\n },\n\n async editWebhook(webhookId, body, reason) {\n return await rest.patch<DiscordWebhook>(rest.routes.webhooks.id(webhookId), { body, reason })\n },\n\n async editWebhookMessage(webhookId, token, messageId, options) {\n return await rest.patch<DiscordMessage>(rest.routes.webhooks.message(webhookId, token, messageId, options), {\n body: options,\n files: options.files,\n })\n },\n\n async editWebhookWithToken(webhookId, token, body) {\n return await rest.patch<DiscordWebhook>(rest.routes.webhooks.webhook(webhookId, token), { body })\n },\n\n async editWelcomeScreen(guildId, body, reason) {\n return await rest.patch<DiscordWelcomeScreen>(rest.routes.guilds.welcome(guildId), { body, reason })\n },\n\n async editWidgetSettings(guildId, body, reason) {\n return await rest.patch<DiscordGuildWidgetSettings>(rest.routes.guilds.widget(guildId), { body, reason })\n },\n\n async executeWebhook(webhookId, token, options) {\n return await rest.post<DiscordMessage>(rest.routes.webhooks.webhook(webhookId, token, options), { body: options })\n },\n\n async followAnnouncement(sourceChannelId, targetChannelId) {\n return await rest.post<DiscordFollowedChannel>(rest.routes.channels.follow(sourceChannelId), {\n body: {\n webhook_channel_id: targetChannelId,\n },\n })\n },\n\n async getActiveThreads(guildId) {\n return await rest.get<DiscordListActiveThreads>(rest.routes.channels.threads.active(guildId))\n },\n\n async getApplicationCommandPermission(guildId, commandId) {\n return await rest.get<DiscordGuildApplicationCommandPermissions>(\n rest.routes.interactions.commands.permission(rest.applicationId, guildId, commandId),\n )\n },\n\n async getApplicationCommandPermissions(guildId) {\n return await rest.get<DiscordGuildApplicationCommandPermissions[]>(rest.routes.interactions.commands.permissions(rest.applicationId, guildId))\n },\n\n async getApplicationInfo() {\n return await rest.get<DiscordApplication>(rest.routes.oauth2Application())\n },\n\n async getAuditLog(guildId, options) {\n return await rest.get<DiscordAuditLog>(rest.routes.guilds.auditlogs(guildId, options))\n },\n\n async getAutomodRule(guildId, ruleId) {\n return await rest.get<DiscordAutoModerationRule>(rest.routes.guilds.automod.rule(guildId, ruleId))\n },\n\n async getAutomodRules(guildId) {\n return await rest.get<DiscordAutoModerationRule[]>(rest.routes.guilds.automod.rules(guildId))\n },\n\n async getAvailableVoiceRegions() {\n return await rest.get<DiscordVoiceRegion[]>(rest.routes.regions())\n },\n\n async getBan(guildId, userId) {\n return await rest.get<DiscordBan>(rest.routes.guilds.members.ban(guildId, userId))\n },\n\n async getBans(guildId, options) {\n return await rest.get<DiscordBan[]>(rest.routes.guilds.members.bans(guildId, options))\n },\n\n async getChannel(id) {\n return await rest.get<DiscordChannel>(rest.routes.channels.channel(id))\n },\n\n async getChannelInvites(channelId) {\n return await rest.get<DiscordInviteMetadata[]>(rest.routes.channels.invites(channelId))\n },\n\n async getChannels(guildId) {\n return await rest.get<DiscordChannel[]>(rest.routes.guilds.channels(guildId))\n },\n\n async getChannelWebhooks(channelId) {\n return await rest.get<DiscordWebhook[]>(rest.routes.channels.webhooks(channelId))\n },\n\n async getDmChannel(userId) {\n return await rest.post<DiscordChannel>(rest.routes.channels.dm(), {\n body: { recipient_id: userId },\n })\n },\n\n async getEmoji(guildId, emojiId) {\n return await rest.get<DiscordEmoji>(rest.routes.guilds.emoji(guildId, emojiId))\n },\n\n async getEmojis(guildId) {\n return await rest.get<DiscordEmoji[]>(rest.routes.guilds.emojis(guildId))\n },\n\n async getFollowupMessage(token, messageId) {\n return await rest.get<DiscordMessage>(rest.routes.interactions.responses.message(rest.applicationId, token, messageId), { unauthorized: true })\n },\n\n async getGatewayBot() {\n return await rest.get<DiscordGetGatewayBot>(rest.routes.gatewayBot())\n },\n\n async getGlobalApplicationCommand(commandId) {\n return await rest.get<DiscordApplicationCommand>(rest.routes.interactions.commands.command(rest.applicationId, commandId))\n },\n\n async getGlobalApplicationCommands() {\n return await rest.get<DiscordApplicationCommand[]>(rest.routes.interactions.commands.commands(rest.applicationId))\n },\n\n async getGuild(guildId, options = { counts: true }) {\n return await rest.get<DiscordGuild>(rest.routes.guilds.guild(guildId, options.counts))\n },\n\n async getGuildApplicationCommand(commandId, guildId) {\n return await rest.get<DiscordApplicationCommand>(rest.routes.interactions.commands.guilds.one(rest.applicationId, guildId, commandId))\n },\n\n async getGuildApplicationCommands(guildId) {\n return await rest.get<DiscordApplicationCommand[]>(rest.routes.interactions.commands.guilds.all(rest.applicationId, guildId))\n },\n\n async getGuildPreview(guildId) {\n return await rest.get<DiscordGuildPreview>(rest.routes.guilds.preview(guildId))\n },\n\n async getGuildTemplate(templateCode) {\n return await rest.get<DiscordTemplate>(rest.routes.guilds.templates.code(templateCode))\n },\n\n async getGuildTemplates(guildId) {\n return await rest.get<DiscordTemplate[]>(rest.routes.guilds.templates.all(guildId))\n },\n\n async getGuildWebhooks(guildId) {\n return await rest.get<DiscordWebhook[]>(rest.routes.guilds.webhooks(guildId))\n },\n\n async getIntegrations(guildId) {\n return await rest.get<DiscordIntegration[]>(rest.routes.guilds.integrations(guildId))\n },\n\n async getInvite(inviteCode, options) {\n return await rest.get<DiscordInviteMetadata>(rest.routes.guilds.invite(inviteCode, options))\n },\n\n async getInvites(guildId) {\n return await rest.get<DiscordInviteMetadata[]>(rest.routes.guilds.invites(guildId))\n },\n\n async getMessage(channelId, messageId) {\n return await rest.get<DiscordMessage>(rest.routes.channels.message(channelId, messageId))\n },\n\n async getMessages(channelId, options) {\n return await rest.get<DiscordMessage[]>(rest.routes.channels.messages(channelId, options))\n },\n\n async getNitroStickerPacks() {\n return await rest.get<DiscordStickerPack[]>(rest.routes.nitroStickerPacks())\n },\n\n async getOriginalInteractionResponse(token) {\n return await rest.get<DiscordMessage>(rest.routes.interactions.responses.original(rest.applicationId, token), { unauthorized: true })\n },\n\n async getPinnedMessages(channelId) {\n return await rest.get<DiscordMessage[]>(rest.routes.channels.pins(channelId))\n },\n\n async getPrivateArchivedThreads(channelId, options) {\n return await rest.get<DiscordListArchivedThreads>(rest.routes.channels.threads.private(channelId, options))\n },\n\n async getPrivateJoinedArchivedThreads(channelId, options) {\n return await rest.get<DiscordListArchivedThreads>(rest.routes.channels.threads.joined(channelId, options))\n },\n\n async getPruneCount(guildId, options) {\n return await rest.get<DiscordPrunedCount>(rest.routes.guilds.prune(guildId, options))\n },\n\n async getPublicArchivedThreads(channelId, options) {\n return await rest.get<DiscordListArchivedThreads>(rest.routes.channels.threads.public(channelId, options))\n },\n\n async getRoles(guildId) {\n return await rest.get<DiscordRole[]>(rest.routes.guilds.roles.all(guildId))\n },\n\n async getScheduledEvent(guildId, eventId, options) {\n return await rest.get<DiscordScheduledEvent>(rest.routes.guilds.events.event(guildId, eventId, options?.withUserCount))\n },\n\n async getScheduledEvents(guildId, options) {\n return await rest.get<DiscordScheduledEvent[]>(rest.routes.guilds.events.events(guildId, options?.withUserCount))\n },\n\n async getScheduledEventUsers(guildId, eventId, options) {\n return await rest.get<Array<{ user: DiscordUser; member?: DiscordMember }>>(rest.routes.guilds.events.users(guildId, eventId, options))\n },\n\n async getSessionInfo() {\n return await rest.getGatewayBot()\n },\n\n async getStageInstance(channelId) {\n return await rest.get<DiscordStageInstance>(rest.routes.channels.stage(channelId))\n },\n\n async getSticker(stickerId: BigString) {\n return await rest.get<DiscordSticker>(rest.routes.sticker(stickerId))\n },\n\n async getGuildSticker(guildId, stickerId) {\n return await rest.get<DiscordSticker>(rest.routes.guilds.sticker(guildId, stickerId))\n },\n\n async getGuildStickers(guildId) {\n return await rest.get<DiscordSticker[]>(rest.routes.guilds.stickers(guildId))\n },\n\n async getThreadMember(channelId, userId) {\n return await rest.get<DiscordThreadMember>(rest.routes.channels.threads.user(channelId, userId))\n },\n\n async getThreadMembers(channelId) {\n return await rest.get<DiscordThreadMember[]>(rest.routes.channels.threads.members(channelId))\n },\n\n async getReactions(channelId, messageId, reaction, options) {\n return await rest.get<DiscordUser[]>(rest.routes.channels.reactions.message(channelId, messageId, reaction, options))\n },\n\n async getUser(id) {\n return await rest.get<DiscordUser>(rest.routes.user(id))\n },\n\n async getVanityUrl(guildId) {\n return await rest.get<DiscordVanityUrl>(rest.routes.guilds.vanity(guildId))\n },\n\n async getVoiceRegions(guildId) {\n return await rest.get<DiscordVoiceRegion[]>(rest.routes.guilds.regions(guildId))\n },\n\n async getWebhook(webhookId) {\n return await rest.get<DiscordWebhook>(rest.routes.webhooks.id(webhookId))\n },\n\n async getWebhookMessage(webhookId, token, messageId, options) {\n return await rest.get<DiscordMessage>(rest.routes.webhooks.message(webhookId, token, messageId, options))\n },\n\n async getWebhookWithToken(webhookId, token) {\n return await rest.get<DiscordWebhook>(rest.routes.webhooks.webhook(webhookId, token))\n },\n\n async getWelcomeScreen(guildId) {\n return await rest.get<DiscordWelcomeScreen>(rest.routes.guilds.welcome(guildId))\n },\n\n async getWidget(guildId) {\n return await rest.get<DiscordGuildWidget>(rest.routes.guilds.widgetJson(guildId))\n },\n\n async getWidgetSettings(guildId) {\n return await rest.get<DiscordGuildWidgetSettings>(rest.routes.guilds.widget(guildId))\n },\n\n async joinThread(channelId) {\n await rest.put(rest.routes.channels.threads.me(channelId))\n },\n\n async leaveGuild(guildId) {\n await rest.delete(rest.routes.guilds.leave(guildId))\n },\n\n async leaveThread(channelId) {\n await rest.delete(rest.routes.channels.threads.me(channelId))\n },\n\n async publishMessage(channelId, messageId) {\n return await rest.post<DiscordMessage>(rest.routes.channels.crosspost(channelId, messageId))\n },\n\n async removeRole(guildId, userId, roleId, reason) {\n await rest.delete(rest.routes.guilds.roles.member(guildId, userId, roleId), { reason })\n },\n\n async removeThreadMember(channelId, userId) {\n await rest.delete(rest.routes.channels.threads.user(channelId, userId))\n },\n\n async sendFollowupMessage(token, options) {\n return await rest.post(rest.routes.webhooks.webhook(rest.applicationId, token), {\n body: options,\n files: options.files,\n unauthorized: true,\n })\n },\n\n async sendInteractionResponse(interactionId, token, options) {\n return await rest.post(rest.routes.interactions.responses.callback(interactionId, token), {\n body: options,\n files: options.data?.files,\n runThroughQueue: false,\n unauthorized: true,\n })\n },\n\n async sendMessage(channelId, body) {\n return await rest.post<DiscordMessage>(rest.routes.channels.messages(channelId), { body, files: body.files })\n },\n\n async startThreadWithMessage(channelId, messageId, body, reason) {\n return await rest.post<DiscordChannel>(rest.routes.channels.threads.message(channelId, messageId), { body, reason })\n },\n\n async startThreadWithoutMessage(channelId, body, reason) {\n return await rest.post<DiscordChannel>(rest.routes.channels.threads.all(channelId), { body, reason })\n },\n\n async syncGuildTemplate(guildId) {\n return await rest.put<DiscordTemplate>(rest.routes.guilds.templates.all(guildId))\n },\n\n async banMember(guildId, userId, body, reason) {\n await rest.put<void>(rest.routes.guilds.members.ban(guildId, userId), { body, reason })\n },\n\n async editBotMember(guildId, body, reason) {\n return await rest.patch<DiscordMember>(rest.routes.guilds.members.bot(guildId), { body, reason })\n },\n\n async editMember(guildId, userId, body, reason) {\n return await rest.patch<DiscordMemberWithUser>(rest.routes.guilds.members.member(guildId, userId), { body, reason })\n },\n\n async getMember(guildId, userId) {\n return await rest.get<DiscordMemberWithUser>(rest.routes.guilds.members.member(guildId, userId))\n },\n\n async getMembers(guildId, options) {\n return await rest.get<DiscordMemberWithUser[]>(rest.routes.guilds.members.members(guildId, options))\n },\n\n async kickMember(guildId, userId, reason) {\n await rest.delete(rest.routes.guilds.members.member(guildId, userId), {\n reason,\n })\n },\n\n async pinMessage(channelId, messageId, reason) {\n await rest.put(rest.routes.channels.pin(channelId, messageId), { reason })\n },\n\n async pruneMembers(guildId, body, reason) {\n return await rest.post<{ pruned: number | null }>(rest.routes.guilds.members.prune(guildId), { body, reason })\n },\n\n async searchMembers(guildId, query, options) {\n return await rest.get<DiscordMemberWithUser[]>(rest.routes.guilds.members.search(guildId, query, options))\n },\n\n async unbanMember(guildId, userId, reason) {\n await rest.delete(rest.routes.guilds.members.ban(guildId, userId), { reason })\n },\n\n async unpinMessage(channelId, messageId, reason) {\n await rest.delete(rest.routes.channels.pin(channelId, messageId), { reason })\n },\n\n async triggerTypingIndicator(channelId) {\n await rest.post(rest.routes.channels.typing(channelId))\n },\n\n async upsertGlobalApplicationCommands(body) {\n return await rest.put<DiscordApplicationCommand[]>(rest.routes.interactions.commands.commands(rest.applicationId), { body })\n },\n\n async upsertGuildApplicationCommands(guildId, body) {\n return await rest.put<DiscordApplicationCommand[]>(rest.routes.interactions.commands.guilds.all(rest.applicationId, guildId), { body })\n },\n }\n\n return rest\n}\n\nenum HttpResponseCode {\n /** Minimum value of a code in oder to consider that it was successful. */\n Success = 200,\n /** Request completed successfully, but Discord returned an empty body. */\n NoContent = 204,\n /** Minimum value of a code in order to consider that something went wrong. */\n Error = 400,\n /** This request got rate limited. */\n TooManyRequests = 429,\n}\n"],"names":["calculateBits","camelToSnakeCase","camelize","delay","getBotIdFromToken","logger","processReactionString","urlToBase64","createInvalidRequestBucket","Queue","InteractionResponseTypes","createRoutes","version","DISCORD_API_VERSION","DISCORD_API_URL","AUDIT_LOG_REASON_HEADER","RATE_LIMIT_REMAINING_HEADER","RATE_LIMIT_RESET_AFTER_HEADER","RATE_LIMIT_GLOBAL_HEADER","RATE_LIMIT_BUCKET_HEADER","RATE_LIMIT_LIMIT_HEADER","RATE_LIMIT_SCOPE_HEADER","createRestManager","options","applicationId","BigInt","token","undefined","Error","baseUrl","proxy","rest","authorization","deleteQueueDelay","globallyRateLimited","invalidBucket","isProxied","startsWith","maxRetryCount","Infinity","processingRateLimitedPaths","queues","Map","rateLimitedPaths","routes","checkRateLimits","url","ratelimited","get","global","now","Date","resetTimestamp","changeToDiscordFormat","obj","Array","isArray","map","item","newObj","key","Object","keys","includes","default_member_permissions","toString","createRequestBody","method","headers","unauthorized","reason","encodeURIComponent","body","files","form","FormData","i","length","append","blob","name","JSON","stringify","assign","processRateLimitedPaths","value","entries","delete","size","setTimeout","processHeaders","rateLimited","remaining","retryAfter","reset","Number","bucketId","limit","handleCompletedRequest","interval","max","set","globalReset","sendRequest","route","payload","requestBodyOptions","debug","response","fetch","catch","error","reject","ok","status","statusText","simplifyUrl","text","retryCount","resetAfter","arrayBuffer","retryRequest","resolve","parts","split","secondLastPart","splice","push","join","processRequest","request","runThroughQueue","queue","makeRequest","bucketQueue","result","err","json","message","Promise","data","parse","post","patch","put","addReaction","channelId","messageId","reaction","channels","reactions","bot","addReactions","ordered","all","addRole","guildId","userId","roleId","guilds","roles","member","addThreadMember","threads","user","createAutomodRule","automod","rules","createChannel","createEmoji","emojis","createGlobalApplicationCommand","interactions","commands","createGuild","createGuildApplicationCommand","createGuildFromTemplate","templateCode","icon","templates","code","createGuildSticker","file","description","tags","stickers","createGuildTemplate","createForumThread","forum","createInvite","invites","createRole","createScheduledEvent","events","createStageInstance","stages","createWebhook","webhooks","avatar","deleteAutomodRule","ruleId","rule","deleteChannel","channel","deleteChannelPermissionOverride","overwriteId","overwrite","deleteEmoji","id","emoji","deleteFollowupMessage","responses","deleteGlobalApplicationCommand","commandId","command","deleteGuild","guild","deleteGuildApplicationCommand","one","deleteGuildSticker","stickerId","sticker","deleteGuildTemplate","deleteIntegration","integrationId","integration","deleteInvite","inviteCode","invite","deleteMessage","deleteMessages","messageIds","bulk","messages","slice","deleteOriginalInteractionResponse","original","deleteOwnReaction","deleteReactionsAll","deleteReactionsEmoji","deleteRole","deleteScheduledEvent","eventId","event","deleteStageInstance","stage","deleteUserReaction","deleteWebhook","webhookId","deleteWebhookMessage","deleteWebhookWithToken","webhook","editApplicationCommandPermissions","bearerToken","permissions","permission","editAutomodRule","editBotProfile","botAvatarURL","userBot","username","trim","editChannel","editChannelPermissionOverrides","editChannelPositions","editEmoji","editFollowupMessage","editGlobalApplicationCommand","editGuild","editGuildApplicationCommand","editGuildMfaLevel","mfaLevel","mfa","level","editGuildSticker","editGuildTemplate","editMessage","editOriginalInteractionResponse","editOriginalWebhookMessage","type","UpdateMessage","editOwnVoiceState","voice","request_to_speak_timestamp","requestToSpeakTimestamp","toISOString","editScheduledEvent","editRole","editRolePositions","editStageInstance","topic","editUserVoiceState","editWebhook","editWebhookMessage","editWebhookWithToken","editWelcomeScreen","welcome","editWidgetSettings","widget","executeWebhook","followAnnouncement","sourceChannelId","targetChannelId","follow","webhook_channel_id","getActiveThreads","active","getApplicationCommandPermission","getApplicationCommandPermissions","getApplicationInfo","oauth2Application","getAuditLog","auditlogs","getAutomodRule","getAutomodRules","getAvailableVoiceRegions","regions","getBan","members","ban","getBans","bans","getChannel","getChannelInvites","getChannels","getChannelWebhooks","getDmChannel","dm","recipient_id","getEmoji","emojiId","getEmojis","getFollowupMessage","getGatewayBot","gatewayBot","getGlobalApplicationCommand","getGlobalApplicationCommands","getGuild","counts","getGuildApplicationCommand","getGuildApplicationCommands","getGuildPreview","preview","getGuildTemplate","getGuildTemplates","getGuildWebhooks","getIntegrations","integrations","getInvite","getInvites","getMessage","getMessages","getNitroStickerPacks","nitroStickerPacks","getOriginalInteractionResponse","getPinnedMessages","pins","getPrivateArchivedThreads","private","getPrivateJoinedArchivedThreads","joined","getPruneCount","prune","getPublicArchivedThreads","public","getRoles","getScheduledEvent","withUserCount","getScheduledEvents","getScheduledEventUsers","users","getSessionInfo","getStageInstance","getSticker","getGuildSticker","getGuildStickers","getThreadMember","getThreadMembers","getReactions","getUser","getVanityUrl","vanity","getVoiceRegions","getWebhook","getWebhookMessage","getWebhookWithToken","getWelcomeScreen","getWidget","widgetJson","getWidgetSettings","joinThread","me","leaveGuild","leave","leaveThread","publishMessage","crosspost","removeRole","removeThreadMember","sendFollowupMessage","sendInteractionResponse","interactionId","callback","sendMessage","startThreadWithMessage","startThreadWithoutMessage","syncGuildTemplate","banMember","editBotMember","editMember","getMember","getMembers","kickMember","pinMessage","pin","pruneMembers","searchMembers","query","search","unbanMember","unpinMessage","triggerTypingIndicator","typing","upsertGlobalApplicationCommands","upsertGuildApplicationCommands","HttpResponseCode","Success","NoContent","TooManyRequests"],"mappings":"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"}
|
package/dist/routes.js
CHANGED