创建者PM对Discord.js机器人的手动回复。可能吗?

时间:2020-07-06 23:59:31

标签: node.js discord discord.js

现在,我的机器人记录了通过PM发送给我的PM。然后我在cmd上写一个答案。 (代码1)

所以,问题是,有可能使我的discord.js机器人在将消息记录到我的PM后,用我发送给我在PM上的机器人的消息回复原始用户?那就是我尝试过的(代码2)

应该是这样的:

机器人的随机用户:你是谁,为什么和我说话?

对我说:[RandomUser]你是谁,为什么你跟我说话?

我到机器人:我是服务器X的机器人,我在和你聊天,是因为Y

向RandomUser发起攻击:我是服务器X的机器人,我在和你聊天,因为Y

我希望你明白了:(

知道如何做让我的机器人等到我回答也很酷。因为我很多次碰到2个用户与机器人对话,所以当我回答第1条消息时,它会向第1个用户发送相同的消息,但发送2次。 很抱歉要求这种奇怪甚至愚蠢的事情。

代码1

console.log(`[${message.author.username}] ${message.content}`);

const rl = readline.createInterface({
   input: process.stdin,
   output: process.stdout
});


rl.question(`Answer to ${message.author.username}: `, (answer) => {
   message.author.send(`${answer}`)
     .then(function (data) {
        //console.log(data);
     })
     .catch(function (error) {
        //console.error(data);
     });

  rl.close();
});

Code2

if (message.author.id !== autorUser.id) {
      var prevUser = message.author;
      autorUser.send(`${message.author.username} a [${botUser.username}]: ${message.content}`)
        .then(message => {
          const collector = new Discord.MessageCollector(message.channel, m => m.author.id === message.author.id, { max: 1 });
          console.log(collector)
          collector.on('collect', message => {
            if (message.author.id === autorUser.id) {
              prevUser.send(`${message.content}`);
            }
          });
        }
        )
        .catch()
    }

1 个答案:

答案 0 :(得分:0)

记录RandomUser的ID并创建一个特殊的命令(或其他命令)以进行回复。

例如:

机器人的随机用户:你是谁,为什么和我说话?

对我说:[RandomUser ID ],你是谁,为什么和我说话?

我到机器人:(例如)!reply ID 我是服务器X的机器人,我在和你聊天,因为Y

向RandomUser发起攻击:我是服务器X的机器人,我在和你聊天,因为Y

获取用户ID并向他们发送消息。

如果您使用的是DiscordJS v12:

client.users.fetch("ID").then(user => user.send("some message"));

client.users.cache.find(user => user.id === "ID").send("some message");

如果您使用的是DiscordJS的旧版本:

client.users.find(user => user.id === "ID").send("some message");