Node.js 问题bot.js-如果使用命令,则bot将逐个询问您的问题,然后打印出特定频道的答案

Node.js 问题bot.js-如果使用命令,则bot将逐个询问您的问题,然后打印出特定频道的答案,node.js,bots,discord,discord.js,Node.js,Bots,Discord,Discord.js,我正在开发一个机器人,它会向你提问,然后向某个频道的版主打印答案。到目前为止,bug报告问题。所以如果命令!报告-使用testbug,然后bot将开始一个接一个地管理您的问题。在回答完所有问题后,bot会将用户答案的嵌入表单打印到频道。一切正常,但有一件事。如果两个或多个用户同时报告,那么答案就混在一起了。我不知道如何解决这个问题。我使用全局数组来保存答案,然后打印出来,这可能是个问题,但是如果我尝试使用局部数组,那对我来说就不管用了。(我使用了注释,因此更容易理解) 你在这里找的是。对我来说,

我正在开发一个机器人,它会向你提问,然后向某个频道的版主打印答案。到目前为止,bug报告问题。所以如果命令!报告-使用testbug,然后bot将开始一个接一个地管理您的问题。在回答完所有问题后,bot会将用户答案的嵌入表单打印到频道。一切正常,但有一件事。如果两个或多个用户同时报告,那么答案就混在一起了。我不知道如何解决这个问题。我使用全局数组来保存答案,然后打印出来,这可能是个问题,但是如果我尝试使用局部数组,那对我来说就不管用了。(我使用了注释,因此更容易理解)


你在这里找的是。对我来说,最简单的方法是创建一个对象并将该用户的响应保存到该对象中,然后显示从该对象捕获的内容。下面是一个函数示例,您可以使用该函数等待来自DM的消息:

    return new Promise(async resolve => {
      const filter = m => m.author.id === user.id;
      const messages = await user.dmChannel.awaitMessages(filter, { max: 1, time: 60000 * 60 * 24 });

      resolve(messages.first());
    });
} 
您将希望在命令运行后调用此函数,因此在您的情况下,您的命令将类似于以下内容:

if (message.content === "!report -testbug"){
 //define your function here or in your client.on('message')...
 const user = message.member
 const c = message.channel
 const product = {};
 let m;
 c.send('') //fill in with your questions etc
 m = await awaitDM(c,user)
 product['message1] = m.first();
}
希望这对你有帮助,因为它确实对我有帮助。您还可以将其配置为使用配置文件和问题,使代码更短、更灵活(从一个配置文件中添加问题、删除问题、编辑问题等)

if (message.content === "!report -testbug"){
 //define your function here or in your client.on('message')...
 const user = message.member
 const c = message.channel
 const product = {};
 let m;
 c.send('') //fill in with your questions etc
 m = await awaitDM(c,user)
 product['message1] = m.first();
}