user.роли не определены, даже если пользователь определен и имеет переменную ролей, discordjs

#javascript #node.js #discord.js

Вопрос:

Пользовательская переменная в моем коде-это пользователь discord, под которым есть под-переменные. Я должен иметь доступ к user.roles, но он говорит, что он не определен.

 let iso = message.client.guilds.cache.get(`${config.serverID}`);
                let user = iso.members.fetch(args[1].slice(3, -1));
                return console.log(user.roles);
 

консоль действительно выдает мне информацию, когда я подключаюсь к консоли.войдите в систему пользователя.

 joinedTimestamp: 1621628004254,
    lastMessageID: null,
    lastMessageChannelID: null,
    premiumSinceTimestamp: 0,
    deleted: false,
    nickname: 'test',
    _roles: [ '755571567861432411', '761262143647252511' ],
    user: User {
 

Я пропустил часть журнала консоли из-за личной информации, но мне было интересно, может ли кто-нибудь помочь мне получить доступ к ролям пользователей? Я использовал код точно так же, как и раньше, и он работал нормально.

Ответ №1:

Во-первых, это помогает await выбрать пользователя (убедитесь, что вы находитесь в async функции), поэтому:

 let user = await iso.members.fetch(args[1].slice(3, -1));
 

Затем свойство, которое вы ищете , не просто вызывается roles , а вместо _roles этого, поэтому вы должны получить правильное свойство.

В совокупности ваш новый код должен выглядеть примерно так:

 let iso = message.client.guilds.cache.get(`${config.serverID}`);
let user = await iso.members.fetch(args[1].slice(3, -1));
return console.log(user._roles);
 

Комментарии:

1. это позволило мне получить доступ к массиву ролей, но он не правильный. есть ли другой способ, которым мне нужно захватить пользователя, потому что это не позволит мне использовать._roles.add, потому что это недопустимая функция.

2. Я смог использовать user.roles.add('role-id-here') без проблем, так _roles как это просто массив, в то время roles как это менеджер ролей ( документы ). Вы получаете какое-либо конкретное сообщение об ошибке?

3. Он просто говорит, что не может выполнить функцию add, потому что user.roles не существует. Я почти уверен, что все необходимые пакеты требуются с самого начала, но возможно ли, что мне не хватает одного?