«Не удается прочитать свойство ‘роли’ неопределенного», когда не указан аргумент

#javascript #node.js #discord #discord.js

#javascript #node.js #Discord #discord.js

Вопрос:

У меня есть этот код для добавления / удаления роли потоковой передачи, когда пользователь вводит ?stream <user> , Он работает нормально, когда это происходит, вводится вся команда, но когда только ?stream

 if (!member.roles.cache.some(role => role.name === 'streaming')) {
                        ^

TypeError: Cannot read property 'roles' of undefined
  

и я понятия не имею, почему?

это код:

 client.on('message', message => {
    if (!message.content.startsWith(prefix) || message.author.bot) return;

    const args = message.content.slice(prefix.length).trim().split(' ');
    const command = args.shift().toLowerCase();
    const member = message.mentions.members.first();

    if (command === 'stream') { 
        if(message.member.permissions.has("MANAGE_ROLES")){
            if (!member.roles.cache.some(role => role.name === 'streaming')) {


                member.roles.add('744292301874135122')
                message.channel.send('`Added streaming role.`')
            } else 
                member.roles.remove('744292301874135122') amp;amp; message.channel.send('`Removed streaming role.`')
            
        } else message.channel.send('`You dont have permission.`')
    }
});

  

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

1. Что такое member.roles.cache ?

2. в member.roles.cache.some каким-то образом ваш элемент не определен. отладьте эту строку const command = args.shift().toLowerCase();

3. ошибка сообщает вам, что элемент не определен, поэтому message.mentions.members.first(); возвращает значение undefined.

Ответ №1:

Discord.js не удается получить элемент, который вы определили в этом методе:

 const member = message.mentions.members.first();
  

Потому что нет упоминания, когда вы просто вводите ?stream . Итак discord.js не удается получить роли элемента, потому что элемент не определен.