如何在一段时间后删除此消息 (Discord.js)

时间:2021-05-06 03:06:50

标签: javascript discord discord.js

Present

我想在 30 秒后删除此消息以防止混乱。 任何帮助表示赞赏。提前致谢!

3 个答案:

答案 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);
});