不和谐.js的工作查询机器人



我正在尝试创建一个机器人,用户可以DM来启动"工作"查询。 例:

用户向机器人发送消息询问!inquiry,然后机器人询问有关工作的问题,例如是个人项目还是公司,然后公司或个人项目是什么twitter,然后它将通过提供选项询问他们请求的服务类型,并根据该选项,机器人将回复"请解释您对新xxx工作的想法">

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

我正在考虑使用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();

我之前做过类似的东西,所以如果你想要完整的代码和上下文:https://github.com/karizma/ravenxi/blob/master/commands/showcase/apply.js

但这里是根据您的上下文重写的: (请注意,由于idk您的上下文代码,因此它没有进行优化,并且您每次调用都会传递变量,但是如果您要使用库,那么如果您确实知道JS应该使用库,那么改进代码应该不会太难(

function sendNexQuestion(index, channel, questions, replys) {
return channel.send(questions[index])
.then(() => channel.awaitMessages(() => true, { max: 1, time: 30000, errors: ["time"] }))
.then(reply => {
const content = reply.first().content;
if (content === prefix + "cancel") throw "Self-Cancel";
if (content === prefix + "redo") {
replys.length = 0;
return sendNextQuestion(0, channel, questions, replys);
}
replys.push(content);
return index >= questions.length - 1 ? new Promise(res => res(replys)) : sendNextQuestion(index + 1, channel, questions, replys);
}).catch(err => {
if (err === "Self-Cancel") {
//user canceled
}
channel.send("Application Canceled");
});
}
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 questions = ["Why do you want this?", "Question 2"];
if (command === "inquiry") {
sendNexQuestion(0, msg.channel, questions, []).then(replys => {
//array of replys
})
}
}
});

相关内容

  • 没有找到相关文章

最新更新