В настоящее время я пишу систему приложений для своего бота Discord.
Система выглядит так:
Вы реагируете на сообщение и получаете сообщение через DM, затем он задает около 5 вопросов (1 вопрос, пользователь пишет ответ, затем следует следующий и т. Д.) В конце должно быть сообщение Спасибо за вашу заявку. Затем бот должен отправить ответы в канал на моем Discord, но отсортированные по вопросам.
What is your name (question 1):
I'm blah blah blah
How old are you (question 2):
Second Answer
...
после этого должна быть система реагирования, то есть вы нажимаете реакцию, бот дает кандидату роль и удаляет сообщение, но это происходит потом.
Теперь о проблеме. Мне удается отреагировать на сообщение, и человек получает DM, но как написать вопросы во встроенном сообщении, а затем отправить их по каналу, как описано выше?
Это текущий код:
bot.on("messageReactionAdd", async (reaction, user) => {
let message = reaction.message,
emoji = reaction.emoji;
if (emoji.name == "????") {
if (reaction.message.partial) await reaction.message.fetch();
if (user === bot.user) return;
reaction.users.remove(user);
user.send("Welcome to your Application")
const questions = [
"What is your name?",
"How old are you?",
"Question 3?",
"Question 4?"
];
const applying = [];
bot.on("message", async message => {
if (message.author.bot) return;
if (applying.includes(message.author.id)) return;
try {
console.log(`${message.author.tag} began applying.`);
applying.push(message.author.id);
await message.channel.send(":pencil: **Application started!** Type `#cancel` to exit.");
for (let i = 0, cancel = false; i < questions.length && cancel === false; i++) {
await message.channel.send(questions[i]);
await message.channel.awaitMessages(m => m.author.id === message.author.id, { max: 1, time: 300000, errors: ["time"] })
.then(async collected => {
application[questions[i]] = collected.first().content
if (collected.first().content.toLowerCase() === "#cancel") {
await message.channel.send(":x: **Application cancelled.**");
applying.splice(applying.indexOf(message.author.id), 1);
cancel = true;
console.log(`${message.author.tag} cancelled their application.`);
}
}).catch(async() => {
await message.channel.send(":hourglass: **Application timed out.**");
applying.splice(applying.indexOf(message.author.id), 1);
cancel = true;
console.log(`${message.author.tag} let their application time out.`);
});
}
await message.channel.send(":thumbsup: **You're all done!**")
await console.log(`${message.author.tag} finished applying.`);
} catch(err) {
console.error(err);
}
let embed = new Discord.MessageEmbed()
.setColor('#1D1D1D')
.setAuthor('New Application',)
.addField("What is your name?", `${}`)
.addField("How old are you?", `${}`)
.addField("Question 3", `${}`)
.addField("Question 4", `${}`)
.addField("Datum:", message.createdAt.toLocaleString())
let sChannel1 = message.guild.channels.cache.get("721515009871577089")
sChannel1.send(embed)
});
}
}
);