无法读取未定义 discord.js v12 的属性“角色”

Posted

技术标签:

【中文标题】无法读取未定义 discord.js v12 的属性“角色”【英文标题】:Cannot read property 'roles' of undefined discord.js v12 【发布时间】:2020-12-29 01:19:42 【问题描述】:

我希望机器人给反应器一个角色。但它不起作用。有谁知道问题出在哪里?我在 discord.js v12 中编码

if (user.bot) return;

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.guild.id !== "753289194738024632") return;

if (reaction.message.channel.id === "753290581412937832") 
    const cs = bot.emojis.cache.find(emoji => emoji.name === "csgo");
    const vl = bot.emojis.cache.find(emoji => emoji.name === "valorant");
    const fn = bot.emojis.cache.find(emoji => emoji.name === "fortnite");

    let role = reaction.guild.roles.cache.find(role => role.id === '753290549548679229');
    member.roles.add(role.id);

【问题讨论】:

确保memberGuildMember 属性的成员,而不是User 属性的成员 【参考方案1】:

我会改成这样:

if(message.channel.type === 'dm') return message.reply('This command does not work in DMs') //checks if the command wasnt executed in DMs
let role = message.guild.roles.cache.find(role => role.id === '753290549548679229');

【讨论】:

【参考方案2】:

尝试将reaction 更改为message

let role = message.guild.roles.cache.find(role => role.id === '753290549548679229');

我认为reaction.guild 不是一个有效的函数

【讨论】:

不是它仍然无法正常工作。控制台给我这个错误:“ReferenceError:消息未定义” 您没有定义消息,您使用的是命令处理程序,还是client.on('message')... 确保你在消息事件中传递了message 那么这个错误就在这里:Cannot read property 'guild' of undefined 使用reaction.message.guild

以上是关于无法读取未定义 discord.js v12 的属性“角色”的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:无法读取未定义 discord.js v12 的属性“发送”

Discord.js V12 TypeError:无法读取未定义的属性“发送”

Discord js v12:无法读取未定义的属性“添加”[重复]

Discord.js v12 角色添加到提到的用户问题

Discord 自定义状态未显示在 Discord.js v12 [关闭]

Discord.js V12 用户信息 createdAt /joinedAt 未定义