Discord Oauth2 Вступить в гильдию

const guildMembersResponse = fetch(`http://discordapp.com/api/guilds/440494010595803136/members/278628366213709824`,
            {
              method: 'PUT',
              headers: {
                Authorization: `Bearer TOKEN`,
              },
            });
            setTimeout(() => {
                console.log(guildMembersResponse)
            }, 500);

Я хочу присоединить пользователя к моему серверу Discord с его идентификатором пользователя и его токеном в nodejs, но если я запрашиваю API Dicord, я получаю сообщение об ошибке:

Promise {
 Response {
  size: 0,
  timeout: 0,
  [Symbol(Body internals)]: { body: [PassThrough], disturbed: false, error: 
  null },
  [Symbol(Response internals)]:
  { url:
  'https://discordapp.com/api/guilds/440494010595803136/members/278628366213709824',
   status: 401,
   statusText: 'UNAUTHORIZED',
   headers: [Headers] } } }

Я использую библиотеку node-fetch!

4 ответа

Решение

Я просто должен был заменить ContentType на "Content-Type"

headers: {
  "Authorization": "Bot [botToken]",
  "Content-Type": "application/json",

},

Вы должны добавить токен пользователя в тело, вот так:

      {
  method: 'PUT',
  access_token: "Bearer TOKEN"
  headers: {
    Authorization: `Bot TOKEN`,
}

токен пользователя должен быть таким: TiaRZjWv5YAp80MpTFRkhi1GhXqddB

Одна вещь, которую я сделал, чтобы заставить это работать, состояла в том, чтобы использовать REST Дискорда. к сожалению, эта документация очень плохо подготовлена.

const { REST } = require('@discordjs/rest');

const rest = new REST({версия: '10' }).setToken('TOKEN');

      rest.put(`/guilds/${guildID}/members/${userID}`, {
    body: {
        'access_token': accessToken
    }
})

Ошибка 401 будет означать, что вы не указали правильную область для ссылки oauth. Подробнее о возможностях OAuth от Discord читайте на https://discordapp.com/developers/docs/topics/oauth2. Цитируя документы, вам понадобится guilds.join объем.

Более того, цитаты из документов:

guilds.join а также bot требует, чтобы у вас была учетная запись бота, связанная с вашим приложением. Кроме того, чтобы добавить пользователя в гильдию, ваш бот должен уже принадлежать к этой гильдии.

Поэтому убедитесь, что ваше приложение соответствует вышеуказанным требованиям.

Если вы убедились, что выполнили вышеуказанные действия, и все еще не можете заставить его работать, вам придется поделиться ссылкой OAuth с нами, чтобы помочь вам в дальнейшем расследовании.

Другие вопросы по тегам