3 回答

TA貢獻1757條經驗 獲得超7個贊
您的代碼非常接近實現您想要的目標,除了您嘗試刪除Embed您創建的對象而不是Message嵌入的對象。這是一個小小的調整,可以實現您所需要的:
const wait = 30000;
let count;
const embed = new Discord.MessageEmbed()
.setColor('#9EFF9A')
.setTitle('Question?')
.setDescription('');
message.channel.send(embed).then(embedMessage => {
embedMessage.channel.awaitMessages(m => m.author.id == message.author.id,
{ max: 1, time: wait }).then(collected => {
embedMessage.delete();
count = collected.first().content;
console.log(count);
}).catch(() => {
embedMessage.delete();
return message.reply('No reply after ' + (wait / 1000) + ' seconds, operation canceled.').then(m => {
m.delete({ timeout: 15000 });
});
});
})
這里的秘密是使用.then()發送嵌入的方法。這允許您獲取Message發送的嵌入的實際對象,然后您可以與之交互?,F在您已經有了Message用于嵌入的對象,您可以使用其方法直接與消息交互,例如delete()和edit()。

TA貢獻1942條經驗 獲得超3個贊
.then(() => {
message.delete()
})
不起作用,因為您從未將消息作為參數傳遞,因此您的嵌入不存在于.then()
您可以嘗試使用.then()或await刪除發送消息。
然后方法
// const embed = ...
message.channel.send(embed).then(msg => {
msg.delete();
});
等待方法
// Make sure you're in an async function
//const embed = ...
const msg = await message.channel.send(msg);
msg.delete();

TA貢獻1818條經驗 獲得超11個贊
我不太熟悉discordjs,但據我了解,您在變量“message”下使用機器人創建一條消息,該消息具有此處所示的屬性: https://discord.js.org/#/docs/main/master/類/消息
然后,您使用該消息將嵌入發送到該消息的頻道。嵌入會詢問一個問題,然后您等待隨后的消息。然后,您想要獲取第一個響應并將其放入計數變量中。然后你想刪除原來的嵌入。如果這一切屬實,我建議刪除包含嵌入本身的原始消息,如下所示:
message.channel.awaitMessages(m => m.author.id == message.author.id,
? ? { max: 1, time: `${wait}` }).then(collected => {
? ? message.delete();
? ? count = collected.first().content;
? ? ? ? console.log(count);
})
或者嘗試這個,但我認為這個方法行不通:
message.channel.awaitMessages(m => m.author.id == message.author.id,
? ? { max: 1, time: `${wait}` }).then(collected => {
? ? embed.delete();
? ? count = collected.first().content;
? ? ? ? console.log(count);
})
添加回答
舉報