3 回答

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
您的代碼非常接近實(shí)現(xiàn)您想要的目標(biāo),除了您嘗試刪除Embed您創(chuàng)建的對(duì)象而不是Message嵌入的對(duì)象。這是一個(gè)小小的調(diào)整,可以實(shí)現(xiàn)您所需要的:
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()發(fā)送嵌入的方法。這允許您獲取Message發(fā)送的嵌入的實(shí)際對(duì)象,然后您可以與之交互?,F(xiàn)在您已經(jīng)有了Message用于嵌入的對(duì)象,您可以使用其方法直接與消息交互,例如delete()和edit()。

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
.then(() => {
message.delete()
})
不起作用,因?yàn)槟鷱奈磳⑾⒆鳛閰?shù)傳遞,因此您的嵌入不存在于.then()
您可以嘗試使用.then()或await刪除發(fā)送消息。
然后方法
// 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貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
我不太熟悉discordjs,但據(jù)我了解,您在變量“message”下使用機(jī)器人創(chuàng)建一條消息,該消息具有此處所示的屬性: https://discord.js.org/#/docs/main/master/類/消息
然后,您使用該消息將嵌入發(fā)送到該消息的頻道。嵌入會(huì)詢問一個(gè)問題,然后您等待隨后的消息。然后,您想要獲取第一個(gè)響應(yīng)并將其放入計(jì)數(shù)變量中。然后你想刪除原來的嵌入。如果這一切屬實(shí),我建議刪除包含嵌入本身的原始消息,如下所示:
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);
})
或者嘗試這個(gè),但我認(rèn)為這個(gè)方法行不通:
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);
})
添加回答
舉報(bào)