多步命令和消息收集器 discord.js
Multistep command and message collector discord.js
我正在尝试创建一个多步骤命令,在最后一次编辑嵌入后我想收集用户回复的内容。我尝试了 await message , message collector 但我没有成功。
这是命令的最后一部分。感谢您的帮助
.then(collected => {
var date = collected.first().emoji.name
switch (date){
case '1️⃣':
message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour lundi`).then(m => m.delete({ timeout: 2000 }));
var date = 'lundi'
break;
case '2️⃣':
message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour mardi`).then(m => m.delete({ timeout: 2000 }));
var date = 'mardi'
break;
case '3️⃣':
message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour mercredi`).then(m => m.delete({ timeout: 2000 }));
var date = 'mercredi'
break;
case '4️⃣':
message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour jeudi`).then(m => m.delete({ timeout: 2000 }));
var date = 'jeudi'
break;
case '5️⃣':
message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour vendredi`).then(m => m.delete({ timeout: 2000 }));
var date = 'vendredi'
break;
}setTimeout(() => 5000)
m.reactions.removeAll()
const newEmbed = new Discord.MessageEmbed()
.setColor('RED')
.setTitle('Entrer le descriptif du devoir')
setTimeout(() => 7000)
m.edit(newEmbed)
const filter = m => m.author.id === message.author.id;
message.channel.awaitMessages(filter,{time:10000}).then(collected =>{
console.log(m)
})
TextChannel.awaitMessages()
method returns a Collection
(a Map
).
因为你希望输出是一个字符串数组,你可以这样做:
message.channel.awaitMessages(filter,{time:10000}).then(collected =>{
const list = [];
collected.forEach((message) => {
list.push(message.content);
});
console.log(list); // ["hello", "world"]
});
如果你只想要一条消息,你可以使用 MessageCollectorOptions
的 max
属性 并将其设置为 1:
message.channel.awaitMessages(filter,{time:10000, max:1}).then(collected =>{
// in case the user did not answer
if (typeof collected.first() === "undefined") {
return;
}
const string = collected.first().content;
console.log(string); // "hello"
});
我正在尝试创建一个多步骤命令,在最后一次编辑嵌入后我想收集用户回复的内容。我尝试了 await message , message collector 但我没有成功。
这是命令的最后一部分。感谢您的帮助
.then(collected => {
var date = collected.first().emoji.name
switch (date){
case '1️⃣':
message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour lundi`).then(m => m.delete({ timeout: 2000 }));
var date = 'lundi'
break;
case '2️⃣':
message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour mardi`).then(m => m.delete({ timeout: 2000 }));
var date = 'mardi'
break;
case '3️⃣':
message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour mercredi`).then(m => m.delete({ timeout: 2000 }));
var date = 'mercredi'
break;
case '4️⃣':
message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour jeudi`).then(m => m.delete({ timeout: 2000 }));
var date = 'jeudi'
break;
case '5️⃣':
message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour vendredi`).then(m => m.delete({ timeout: 2000 }));
var date = 'vendredi'
break;
}setTimeout(() => 5000)
m.reactions.removeAll()
const newEmbed = new Discord.MessageEmbed()
.setColor('RED')
.setTitle('Entrer le descriptif du devoir')
setTimeout(() => 7000)
m.edit(newEmbed)
const filter = m => m.author.id === message.author.id;
message.channel.awaitMessages(filter,{time:10000}).then(collected =>{
console.log(m)
})
TextChannel.awaitMessages()
method returns a Collection
(a Map
).
因为你希望输出是一个字符串数组,你可以这样做:
message.channel.awaitMessages(filter,{time:10000}).then(collected =>{
const list = [];
collected.forEach((message) => {
list.push(message.content);
});
console.log(list); // ["hello", "world"]
});
如果你只想要一条消息,你可以使用 MessageCollectorOptions
的 max
属性 并将其设置为 1:
message.channel.awaitMessages(filter,{time:10000, max:1}).then(collected =>{
// in case the user did not answer
if (typeof collected.first() === "undefined") {
return;
}
const string = collected.first().content;
console.log(string); // "hello"
});