我想创建一个命令,将 DM 发送给对来自 ID 的消息做出反应(所有反应)的用户。我想过滤机器人,如果一个用户有两次反应,就不要为他们发送两条消息。
if (command === 'gopv') {
message.channel.messages.fetch("806866144597770280").then((reactionMessage) => {
console.log(
reactionMessage.reactions.cache
.each(async(reaction) => await reaction.users.fetch())
.map((reaction) => reaction.users.cache.filter((user) => !user.bot))
.flat()
);
});
}
答案 0 :(得分:1)
我可能会创建一个 dmSent
对象,以用户 ID 作为键,这样我就可以轻松检查是否已经向他们发送了 DM。当您遍历对消息做出反应的用户时,您可以检查 ID 是否已经存在或者用户是否是机器人。如果在 dmSent
对象中找不到用户,您可以发送消息并将用户 ID 添加到对象中。
我刚刚检查过,以下仅向至少对消息做出反应的每个用户发送一条消息:
if (command === 'gopv') {
const dmSent = {};
try {
const { reactions } = await message.channel.messages.fetch('806866144597770280');
reactions.cache.each(async (reaction) => {
const usersReacted = await reaction.users.fetch();
usersReacted.each((user) => {
if (dmSent[user.id] || user.bot) return;
dmSent[user.id] = true;
user.send('You sent at least one reaction, so here is a DM.');
});
});
} catch (err) {
console.log(err);
}
}