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发送的嵌入的实际对象,然后您可以与之交互。现在您已经有了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);
})
添加回答
举报