Discord.js Добавление ролей в событие «messageReactionAdd»

#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 в возврате обещания, поэтому решите это обещание, и оно должно сработать

вот руководство по обещаниям на случай, если вы не знаете, как их решить

discord.js руководство

и еще один на mdn

mdn

discord.js документы по методу выборки

Просто предложение: вы должны использовать await вместо then того, как с текущим кодом, он будет намного чище