我试图通过反应在我的机器人的角色,但它不发送的角色,用户有'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
属性。这只存在于GuildMember
s上。您必须将其更改为:
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