向消息添加响应所需的特定于特定角色

时间:2020-10-02 01:01:53

标签: javascript node.js discord discord.js

client.on('messageReactionAdd', async (reaction, user) => {
  const role = guild.roles.cache.find((role) => role.name === 'specific role')

  if (reaction.emoji.id == '759643335043448834' && reaction.author.roles.has(role.id))
  return
  else await reaction.message.delete({timeout:2500})
  
});

所以现在这给我一个错误,说未定义行会。我希望它在用户没有特定角色时删除特定的自定义表情符号,我很困惑如何让任何人知道该问题?

1 个答案:

答案 0 :(得分:0)

有两个问题。显然,第一个未定义guild。幸运的是,MessageReaction具有message属性,而该属性具有guild属性。

const role = reaction.message.guild.roles.cache.find(
 (role) => role.name === 'specific role'
);

首先,reaction没有author属性。即使这样做,它也会返回一个User对象,您无法从中访问角色。阅读this answer来了解不同之处。相反,您应该使用Guild.member()函数。

client.on('messageReactionAdd', async (reaction, user) => {
 const guild = reaction.message.guild;
 const role = guild.roles.cache.find((role) => role.name === 'specific role');

 if (
  reaction.emoji.id == '759643335043448834' &&
  guild.member(user).roles.has(role.id)
 )
  return;

 reaction.message.delete({ timeout: 2500 });
});