Javascript Discord.js的作业查询Bot

Javascript Discord.js的作业查询Bot,javascript,discord.js,Javascript,Discord.js,我正在尝试创建一个机器人,用户可以使用它来启动“作业”查询。 例如: 用户向机器人发送消息!询问,然后机器人询问有关工作的问题,例如,如果是个人项目或公司,那么公司或个人项目是什么twitter,然后通过提供选项询问他们请求的服务类型,并基于该选项,机器人将回答“请解释您对新xxx工作的想法” 然后,一旦用户回答了所有这些问题,bot就会发送一个包含他们所回答内容的嵌入 我曾想过使用MessageCollector,但我被困于如何实现逻辑。我有机器人响应用户,所以我知道如何通过DM向用户发送消息

我正在尝试创建一个机器人,用户可以使用它来启动“作业”查询。 例如:

用户向机器人发送消息!询问,然后机器人询问有关工作的问题,例如,如果是个人项目或公司,那么公司或个人项目是什么twitter,然后通过提供选项询问他们请求的服务类型,并基于该选项,机器人将回答“请解释您对新xxx工作的想法”

然后,一旦用户回答了所有这些问题,bot就会发送一个包含他们所回答内容的嵌入

我曾想过使用MessageCollector,但我被困于如何实现逻辑。我有机器人响应用户,所以我知道如何通过DM向用户发送消息。只是不太明白如何实现其余的。我需要推一下

client.on("message", async (msg) => {
  if (!msg.content.startsWith(prefix) || msg.author.bot) return;

if (msg.channel.type === "dm") {
 const args = msg.content.slice(prefix.length).split(/ +/);
 const command = args.shift().toLowerCase();
 const discordUser = msg.author.tag;

if (command !== "order") {
  try {
    sendFailMessage(msg, "wrongCommand");
  } catch (e) {
    console.warn("Failed sending Fail Message");
  }
} else {
  msg.channel.startTyping(1);
  msg.author.send();

我以前也做过类似的事情,以防您需要完整的代码和上下文:

但这是根据你的背景改写的: (注意,它不是优化的,因为idk是您的上下文代码,并且您正在为每个调用传递变量,但是如果您非常了解js,那么如果您要使用库,那么改进代码应该不会太难)

函数sendNexQuestion(索引、频道、问题、回复){
返回频道。发送(问题[索引])
.then(()=>channel.awaitMessages(()=>true,{max:1,time:30000,errors:[“time”]}))
。然后(回复=>{
const content=reply.first().content;
如果(内容===前缀+“取消”)抛出“自取消”;
如果(内容===前缀+“重做”){
答复:长度=0;
返回sendNextQuestion(0,频道,问题,回复);
}
回复。推送(内容);
返回索引>=questions.length-1?新承诺(res=>res(replys)):发送下一个问题(索引+1,频道,问题,回复);
}).catch(错误=>{
如果(错误==“自动取消”){
//用户取消
}
频道发送(“申请取消”);
});
}
client.on(“message”,异步(msg)=>{
如果(!msg.content.startsWith(前缀)| | msg.author.bot)返回;
如果(msg.channel.type==“dm”){
const args=msg.content.slice(prefix.length.split(+/);
const命令=args.shift().toLowerCase();
const questions=[“你为什么想要这个?”,“问题2”];
如果(命令==“查询”){
sendNexQuestion(0,msg.channel,questions,[])。然后(reply=>{
//应答数组
})
}
}
});

欢迎使用堆栈溢出!到目前为止你有什么代码?我在中添加了我的代码。所以在这之后,我只是重新开始,因为在回答了第一个问题之后,我的申请被取消了。我怎样才能解决这个问题?嘿,对不起,我忘了回复,你还有这个问题吗?