如何从表情符号中仅删除一个用户的反应

时间:2020-08-19 01:03:32

标签: javascript node.js discord.js

我的代码:

client.on("messageReactionAdd", (reaction, user) => {
  if (reaction.message.id === "<message ID>")
    reaction.message.reactions.cache.forEach((reaction) =>
      reaction.remove(user.id)
    );
});

我的问题:

上面的代码通常有效。每当有人对指定消息做出反应时,都会删除他们的反应。但是,它会删除所有人的 else 反应(对该表情符号)。如何仅从表情符号中删除某个特定用户的反应?

2 个答案:

答案 0 :(得分:0)

来自Discord.js docs

const userReactions = message.reactions.cache.filter(reaction => reaction.users.cache.has(userId));
try {
    for (const reaction of userReactions.values()) {
        await reaction.users.remove(userId);
    }
} catch (error) {
    console.error('Failed to remove reactions.');
}

答案 1 :(得分:0)

我发现了一些可行的方法:

reaction.message.reactions.cache.first() // fetch the reaction (you could use `.get()` as well)
  .users.remove(user.id); // remove the user

我真的很困惑为什么 this 可以工作,但是我原来的功能却不能。


编辑:我是个白痴。我应该使用users属性。 reaction.users.remove()正常。