向对消息做出反应的用户发送消息 discrod js

时间:2021-02-04 13:15:42

标签: javascript node.js discord discord.js

我想创建一个命令,将 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()
    );
  });
}

1 个答案:

答案 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);
  }
}