我正在寻求您的帮助。 我正在尝试发送一条消息,等待回复,然后当用户在时限内答复时,它会发送另一条这样的消息。 我不知道你是否理解我。 如果您需要更多信息,请不要回答。
此致。
我当前的代码:
const filter = m => m.author.id === message.author.id && m.author.id !== bot.user.id
// CHOISIR LE NOM
message.reply("S'il vous plaît choisissez un nom pour le tournoi.").then(r => r.delete(10000));
message.channel.awaitMessages(filter, {
max: 1,
time: 10000
}).then(collected => {
if(collected.first().content === "stop" || collected.first().content === "cancel"){
return message.reply("Création du tournoi annulé.")
}
let tournamentname = collected.first().content;
db.collection("tournois").findOneAndUpdate({"tournamentInformations.status": "active"}, {
$set: {
"tournamentInformations.tournamentName": tournamentname
}}, {upsert: true}, function(err,doc) { if (err) { throw err; } });
message.channel.send(":white_check_mark: | Vous avez défini le nom du tournoi à "+tournamentname);
}).catch(err => {
console.log(err)
})
// CHOISIR L'ORGANISATEUR
message.reply("S'il vous plaît choisissez le nom de l'organisateur.").then(r => r.delete(10000));
message.channel.awaitMessages(filter, {
max: 1,
time: 10000
}).then(collected => {
if(collected.first().content === "stop" || collected.first().content === "cancel"){
return message.reply("Création du tournoi annulé.")
}
let organisateur = collected.first().content;
db.collection("tournois").findOneAndUpdate({"tournamentInformations.status": "active"}, {
$set: {
"tournamentInformations.organizedBy": organisateur
}}, {upsert: true}, function(err,doc) { if (err) { throw err; } });
message.channel.send(":white_check_mark: | Vous avez défini l'organisateur à "+organisateur);
}).catch(err => {
console.log(err)
})
答案 0 :(得分:0)
您似乎需要进行.awaitMessages
和.then
的排序-我强烈建议您在发布至少30分钟之前,先对您的问题进行搜索,并预先搜索official Discord.js documentation
我可以提供一个简单的例子:
message.channel.send('First question').then(async (first) => {
message.channel.awaitMessages(filter, { maxMatches: 1, time: 60000, errors: ['time']}).then(async (collected) => {
await first.delete()
await collected.first().delete()
}).then(async () => {
message.channel.send('Question 2').then(async (second) => {
message.channel.awaitMessages(filter, { maxMatches: 1, time: 60000, errors: ['time']}).then(async (collected) => {
await second.delete()
await collected.first().delete()
}).catch(collected => {
message.channel.send('Your answer timed out')
})
}).catch(collected => {
message.channel.send('Your answer timed out')
})
这是做什么的(草率地,当我复制并粘贴此代码段并通过自己的代码对其进行编辑时,可能会丢失令牌)是发送第一条消息'First question'
,并允许60秒的响应时间。如果有答案,它将删除问题提示以及答案(您可以根据需要存储答案),然后对第二个问题执行相同的操作,依此类推。如果60秒的时间期限届满,它将结束序列并告诉用户他们没有时间了。
希望这样做有帮助,将其标记为正确。
(P.S。如果您熟悉函数,所有这些都可以合并为一个,以简化和简化代码,我只是向您提供了这样的示例,以免引起您的混淆)