【问题标题】:Discord specific roles required for adding a reaction to a message向消息添加反应所需的不和谐特定角色
【发布时间】:2021-01-17 17:51:27
【问题描述】:
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})
  
});

所以现在这给了我一个错误,说公会没有定义。我希望它在用户没有特定角色时删除特定的自定义表情符号我有点困惑有人知道这个问题该怎么办?

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    有两个问题。显然,第一个是 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 });
    });
    

    【讨论】:

    • 我认为您可能不小心添加了“s”。这是Guild.member(),而不是Guild.members()
    • 那没有修复它
    猜你喜欢
    • 2021-11-25
    • 2020-07-16
    • 2021-10-27
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    相关资源
    最近更新 更多