#discord.js
Вопрос:
Я не могу добавить роли в «messageReactionAdd» (ошибка при добавлении). Пожалуйста, это для частного бота discord. Спасибо
Мой код:
bot.on('messageReactionAdd', async (reaction, user) => {
const member = reaction.message.guild.members.fetch(user.id)
if (reaction.partial) {
// If the message this reaction belongs to was removed, the fetching might result in an API error which should be handled
try {
await reaction.fetch();
} catch (error) {
console.error('Something went wrong when fetching the message: ', error);
// Return as `reaction.message.author` may be undefined/null
return;
}
}
// Now the message has been cached and is fully available
if(reaction.message.id === '853679407499313162'){
const role = reaction.message.guild.roles.cache.find(r => r.name === '🔔')
console.log(reaction._emoji.name)
if(reaction._emoji.name === '🔔'){
member.roles.add(role.id)
} /*else if(reaction.name === '🔎'){
us
}*/
//reaction.users.remove(user.id)
}
});
Консоль возвращается:
TypeError: Cannot read property 'add' of undefine
Есть какие-нибудь идеи?
Комментарии:
1. Войдите в свой
member
(console.log(участник)) и проверьте, пусто ли оно. Вы также можете попробовать проверить, является лиuser
это частичным или нет, и.fetch()
его, после того как вы это проверили. Это пример того, как я структурировал это мероприятие
Ответ №1:
ваша проблема заключается fetch
в возврате обещания, поэтому решите это обещание, и оно должно сработать
вот руководство по обещаниям на случай, если вы не знаете, как их решить
и еще один на mdn
discord.js документы по методу выборки
Просто предложение: вы должны использовать await
вместо then
того, как с текущим кодом, он будет намного чище