我对Discord JS有疑问 如何从提取的邮件中删除特定用户的反应? 我尝试过了
message.channel.fetchMessage(messageID).then(m => {
m.reactions.remove(UserID)
})
但是它并不能消除实际的反应。 感谢您的帮助。
答案 0 :(得分:3)
由于这个问题吸引了很多人,所以我决定发布对我有用的
删除特定用户的特定反应
// Channel = the channel object of the message's original channel
// MessageID = ID of the message, if hard coding, put around quotations eg: "1234"
const msg = await channel.messages.fetch(MessageID);
msg.reactions.resolve("REACTION EMOJI,
REACTION OBJECT OR REACTION ID").users.remove("ID OR OBJECT OF USER TO REMOVE");
注意:如果使用的是Discord.js的旧版本,只需将channel.messages.fetch
替换为channel.fetchMessage
答案 1 :(得分:1)
message.reactions
是messageReactions
的集合。我认为您需要遍历集合,然后删除所需的messageReaction
。
message.channel.fetchMessage(messageID).map(r => r).then(message => {
message.reactions.forEach(reaction => reaction.remove(UserID))
})
答案 2 :(得分:1)
所选选项有效,我想解释一下。您需要从消息中获取MessageReaction对象,以获取要删除的响应。您的操作方式取决于您的代码,在我的情况下,我正在与一个反应收集器一起工作,因此在我的收集调用中,我已经有了MessageReaction。
然后,您需要访问users属性(ReactionUserManager对象)。使用此对象,您可以调用.remove()。
代码如下:
collector.on('collect', async (reaction, user) => {
...
// delete the reaciton
reaction.users.remove(user.id);
});
答案 3 :(得分:0)
如果您查看documentation的反应,您会发现它是Collection
,并且提到它们是由反应 ID而不是用户ID映射的。 。您可以删除它们的方法是获得反应,过滤用户,然后也许做些什么?我不确定如何专门删除那些,但这应该可以吸引用户,然后将其过滤为所需的ID。
message.channel.fetchMessage(messageID).then(msg = m.reactions.get(reactionID).users); // Gets the users that reacted to a certain emote, I think.