#javascript #node.js #arrays #discord #discord.js
Вопрос:
Я пытаюсь разработать бота для раздора, но у меня возникли некоторые проблемы.
Цель моего бота-отправить сообщение на текстовый канал «ГГГГ», когда мои сотрудники на моем сервере присоединятся к голосовому каналу с именем «ХХХХХХ».
Мой Кодовый Блок:
client.on('voiceStateUpdate', (oldMember, newMember) => {
let newUserChannel = newMember.channelID;
let oldUserChannel = oldMember.channelID;
if(newUserChannel === "838819904798457928" amp;amp; newMember.roles.cache.has === "839532611948511272")
{
console.log(" example entered " newUserChannel);
}
else{
console.log("Left the channel");
}
});
Мой Код Ошибки :
if(newUserChannel === "838819904798457928" amp;amp; newMember.roles.cache.has === "839532611948511272")
^
TypeError: Cannot read property 'cache' of undefined
Press any key to continue . . .
Комментарии:
1.
.has()
это метод, а не свойство. Вам нужно передать в него значение. Напримерnewmember.roles.cache.has("839532611948511272")
Ответ №1:
voiceStateUpdate
Событие не возвращает члена Гильдии, оно возвращает состояние голоса.
Поэтому, чтобы получить роли участников, вам сначала нужно будет получить участника из голосового состояния
client.on('voiceStateUpdate', (oldState, newState) => {
console.log(newState.member.roles.cache);
});
Комментарии:
1. Огромное спасибо. Я решил свою проблему, и теперь она отлично работает. Я оставляю здесь блок рабочего кода, чтобы наши друзья, которые хотят выполнить такую операцию или у которых возникли проблемы, могли посмотреть и использовать его.
code client.on('voiceStateUpdate', (oldState, newState) => { let newUserChannel = newState.channelID; if(newUserChannel === "838819904798457928" amp;amp; newState.member.roles.cache.get('839532611948511272')) { console.log("Rol Var"); } });