#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 не удается получить роли элемента, потому что элемент не определен.