fix: add MFA code support to authorizeURL method

This commit is contained in:
Elysia
2025-01-20 23:10:12 +07:00
parent 4442918d82
commit 759cad461f
4 changed files with 16 additions and 9 deletions

View File

@@ -708,6 +708,7 @@ class Client extends BaseClient {
* Authorize an application.
* @param {string} urlOAuth2 Discord Auth URL
* @param {OAuth2AuthorizeOptions} [options] Oauth2 options
* @param {string|number} [mfaCode = null] The mfa code if you have it enabled
* @returns {Promise<{ location: string }>}
* @example
* client.authorizeURL(`https://discord.com/api/oauth2/authorize?client_id=botID&permissions=8&scope=applications.commands%20bot`, {
@@ -716,7 +717,7 @@ class Client extends BaseClient {
authorize: true
})
*/
authorizeURL(urlOAuth2, options = {}) {
authorizeURL(urlOAuth2, options = {}, mfaCode = null) {
// ! throw new Error('METHOD_WARNING');
const url = new URL(urlOAuth2);
if (!/https:\/\/(canary\.|ptb\.)?discord.com\/api(\/v\d{1,2})?\/oauth2\/authorize\?/.test(urlOAuth2)) {
@@ -742,6 +743,7 @@ class Client extends BaseClient {
return this.api.oauth2.authorize.post({
query: searchParams,
data: options,
mfaCode,
});
}

View File

@@ -99,10 +99,15 @@ class APIRequest {
'base64',
);
}
if (this.options.mfaToken) {
headers['X-Discord-Mfa-Authorization'] = this.options.mfaToken;
}
// Captcha
if (captchaKey && typeof captchaKey == 'string') headers['X-Captcha-Key'] = captchaKey;
if (captchaRqToken && typeof captchaRqToken == 'string') headers['X-Captcha-Rqtoken'] = captchaRqToken;
let body;
if (this.options.files?.length) {
body = new FormData();
@@ -128,10 +133,6 @@ class APIRequest {
}
}
// Captcha
if (captchaKey && typeof captchaKey == 'string') headers['X-Captcha-Key'] = captchaKey;
if (captchaRqToken && typeof captchaRqToken == 'string') headers['X-Captcha-Rqtoken'] = captchaRqToken;
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), this.client.options.restRequestTimeout).unref();
return fetch(url, {