我想删除成员因任何原因离开服务器时对特定消息的反应。下面的代码设置为在有人发送消息时工作,但这只是为了测试,我稍后会更改该部分。
我一开始以为代码会删除所有反应,结果发现它不是删除所有用户,而是删除机器人反应,因为他们是帖子的作者。
bot.channels.cache.get('786073099685593088').messages.fetch('842501905292066857').then((message) => {
const userId = message.author.id
const userReactions = message.reactions.cache.filter(reaction => reaction.users.cache.has(userId));
try {
for (const reaction of userReactions.values()) {
reaction.users.remove(userId)
}
} catch (error) {
console.log(error)
}
})
这一个什么都不做,但我试图让常量在外面,这样它就不会看是谁写的消息正在被删除,而是看触发动作的帖子的作者是谁(将以后改成离开的成员)
const author = message.author.id
bot.channels.cache.get('786073099685593088').messages.fetch('852625430950838302').then((message) => {
const userReactions = message.reactions.cache.filter(reaction => reaction.users.cache.has(author));
try {
for (const reaction of userReactions.values()) {
reaction.users.remove(author)
}
} catch (error) {
console.log(error)
}
})
答案 0 :(得分:1)
尝试执行以下操作,它可能会解决您的问题。这将消除用户的反应。
reaction.users.remove(user.id)
答案 1 :(得分:0)
用更少的代码解决了我自己的问题
bot.channels.cache.get('channelID').messages.fetch('messageID').then((message) => {
message.reactions.cache.filter(reaction => reaction.users.remove(member.user.id));
})