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