首页 > 解决方案 > 如何在删除包含 discord.js 的嵌入之前设置延迟?

问题描述

目前这个机器人会在我调用命令时发布嵌入,然后立即删除我想要的命令消息。我也希望它删除嵌入,但我想在删除嵌入之前添加延迟。我在这里做错了什么?

command(client, 'title' , (message) => {

   const embed = new Discord.MessageEmbed()

      .setTitle('Title Here')

   message.channel.send(embed).then

      setTimeout(() => {

       (message => message.delete(embed))

      }, 5000)
  
 

   

   if(message.content.startsWith('!' + 'title')) {
      message.delete()}

 })

标签: javascriptdiscorddiscord.jsbots

解决方案


你真的搞砸了.then

.then 是另一种处理承诺和回调的方式。但在您的代码中,没有回调。

您应该做的是将删除消息的代码放在 .then 的外部和上方

之后,确保 .then 实际上有一个回调。它应该是这样的:

command(client, 'title' , (message) => {

   if(message.content.startsWith('!' + 'title')) {
      message.delete()
   }

   const embed = new Discord.MessageEmbed()
   .setTitle('Title Here')

   message.channel.send(embed).then(msg => {

      setTimeout(() => {
        msg.delete()
      }, 5000)
 })

它的作用是,当您运行命令时,它会删除调用。然后它发送嵌入并等待直到不和谐 api 响应说“消息发送成功!”,它运行超时 5 秒并删除嵌入。


推荐阅读