Present
我想在 30 秒后删除此消息以防止混乱。 任何帮助表示赞赏。提前致谢!
答案 0 :(得分:1)
TextChannel#send()
返回一个 promise,因此您可以使用 then()
函数或使用 async-await 来解决它。 Message#delete()
有一个超时选项,但它将在即将推出的版本中弃用。所以删除 setTimeout()
函数内的消息。
例如:使用then
函数:
let noiceEmbed = new discord.MessageEmbed()
.setTitle(`Embed`)
.addField('EmbedField','Value') //your embed.
message.channel.send(noiceEmbed)
.then((message)=>setTimeout(()=>message.delete(),1000)); // 1000 is time in milliseconds
例如:使用 async-await:为了使用它,您需要将整个客户端事件设为异步。
client.on('message', async message=>{
//other commands.
let noiceEmbed = new Discord.MessageEmbed()
.setTitle(`Embed`)
.addField('EmbedField','Value'); //your embed.
let embedmessage= await message.channel.send(noiceEmbed);
setTimeout(()=>{
embedmessage.delete()
},5000);
});
此外,如果 queue
是您的公会,那么 queue.textChannel
不是一回事。 TextChannel
是一种渠道。所以你为了把这个嵌入发送到特定的频道,你需要通过 id 获取频道,然后发送嵌入。
答案 1 :(得分:0)
简单,只用delete
函数
queue.textChannel.send(noiceEmbed).then((message) => message.delete({ timeout: 30000 }));
记住,超时时间用 miliseconds
表示。
1ms * 1000 = 1s
30000ms = 30s
答案 2 :(得分:0)
你需要做一个.then
,然后放置一个超时函数。
queue.textChannel.send(noiceEmbed).then((message)=> {
setTimeout(function(){
message.delete();
}, 5000) //Milliseconds (5000 = 5 Seconds);
});