client.on("messageReactionAdd", (reaction, user) => {
if (reaction.message.id === "<message ID>")
reaction.message.reactions.cache.forEach((reaction) =>
reaction.remove(user.id)
);
});
上面的代码通常有效。每当有人对指定消息做出反应时,都会删除他们的反应。但是,它会删除所有人的 else 反应(对该表情符号)。如何仅从表情符号中删除某个特定用户的反应?
答案 0 :(得分:0)
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()
正常。