user.roles.map抛出无法读取未定义的map



我试图通过反应在我的机器人的角色,但它不发送的角色,用户有'map'总是给出错误

index.js中的代码:

client.on('messageReactionAdd', async(reaction, user) => {
if(reaction.message.partial) await reaction.message.fetch();
if(reaction.partial) await reaction.fetch();
if(user.bot) return;
if(!reaction.message.guild) return;
if(reaction.message.id === '881057147692138546'){
if(reaction.emoji.name === 'r_check_pde') {
await reaction.message.guild.members.cache.get(user.id).roles.add('879244179945963571')
}
}
if(reaction.message.id === '881057147692138546'){
if(reaction.emoji.name === 'r_check_pde') {
await reaction.message.guild.members.cache.get(user.id).roles.remove('879957726128648263')
user.send(
new Discord.MessageEmbed()
.setDescription("Registrado")
.addField('Roles:', user.roles.map(r => `${r}`).join(' | '), true)
)
}
}
})

错误信息:

不能准备属性'map' undefined

User类没有roles属性。这只存在于GuildMembers上。您必须将其更改为:

const member = await reaction.message.guild.members.fetch(user.id)
//...
addField('Roles:', member.roles.cache.map(r => `${r}`).join(' | '), true) //notice you also have to access the 'cache' property

最新更新