从 fetchMessage 中删除用户反应? - 不和谐的JS
Remove a users reaction from fetchMessage? - Discord JS
我有一个问题 Discord.js。
我如何从消息中删除特定用户的反应?
我试过用这段代码这样做:
// Now known as 'messages.fetch'.
message.channel.fetchMessage(MessageID).then(m => {
m.reactions.remove(UserID);
});
但它根本没有消除用户的反应。我做错了什么吗?
如有任何帮助,我们将不胜感激。
如果您查看 documentation 的反应,您会发现它是一个 Collection
,并且它提到它们由 反应 ID 映射,而不是用户 ID。您可以删除它们的方法是获得反应,过滤用户,然后可能对此做些什么?我不确定如何具体删除 those,但这应该可以让您获得用户,然后将其过滤为您想要的 ID。
message.channel.fetchMessage(messageID).then(msg = m.reactions.get(reactionID).users); // Gets the users that reacted to a certain emote, I think.
message.reactions
是 messageReactions
的集合。我认为您需要遍历集合,然后删除所需的 messageReaction
。
message.channel.fetchMessage(messageID).map(r => r).then(message => {
message.reactions.forEach(reaction => reaction.remove(UserID))
})
由于这个问题吸引了很多人,我决定post对我有用的
删除特定用户的特定反应
// 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
选择的选项有效,我想解释一下。对于要删除的反应,您需要从消息中获取 MessageReaction 对象。你如何做到这一点取决于你的代码,在我的例子中,我正在使用反应收集器,所以在我的收集调用中我已经有了 MessageReaction。
然后您需要访问用户 属性(一个 ReactionUserManager 对象)。使用此对象,您可以调用 .remove()。
代码如下:
collector.on('collect', async (reaction, user) => {
...
// delete the reaciton
reaction.users.remove(user.id);
});
我有一个问题 Discord.js。 我如何从消息中删除特定用户的反应?
我试过用这段代码这样做:
// Now known as 'messages.fetch'.
message.channel.fetchMessage(MessageID).then(m => {
m.reactions.remove(UserID);
});
但它根本没有消除用户的反应。我做错了什么吗?
如有任何帮助,我们将不胜感激。
如果您查看 documentation 的反应,您会发现它是一个 Collection
,并且它提到它们由 反应 ID 映射,而不是用户 ID。您可以删除它们的方法是获得反应,过滤用户,然后可能对此做些什么?我不确定如何具体删除 those,但这应该可以让您获得用户,然后将其过滤为您想要的 ID。
message.channel.fetchMessage(messageID).then(msg = m.reactions.get(reactionID).users); // Gets the users that reacted to a certain emote, I think.
message.reactions
是 messageReactions
的集合。我认为您需要遍历集合,然后删除所需的 messageReaction
。
message.channel.fetchMessage(messageID).map(r => r).then(message => {
message.reactions.forEach(reaction => reaction.remove(UserID))
})
由于这个问题吸引了很多人,我决定post对我有用的
删除特定用户的特定反应
// 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
选择的选项有效,我想解释一下。对于要删除的反应,您需要从消息中获取 MessageReaction 对象。你如何做到这一点取决于你的代码,在我的例子中,我正在使用反应收集器,所以在我的收集调用中我已经有了 MessageReaction。
然后您需要访问用户 属性(一个 ReactionUserManager 对象)。使用此对象,您可以调用 .remove()。
代码如下:
collector.on('collect', async (reaction, user) => {
...
// delete the reaciton
reaction.users.remove(user.id);
});