发送后如何删除消息?

我有一个代码,当成员加入公会时发送消息,我想在不久之后将其删除。

我的代码:

client.on('guildMemberAdd', (member) => {
  var server = member.guild.id;
  if (server === '760511134079254610') {
    let kanal = client.channels.cache.get('786172941703970860');
    const embed = new Discord.MessageEmbed()
      .setTitle('Ho?geldin!')
      .setDescription(`**<@${member.user.id}>** kullan?c?s? sunucumuza geldi!`)
      .setColor('BLUE')

    kanal.send(embed)
}})

我尝试过embed.delete或者只是经典,msg.delete但它不起作用,因为我可以/不知道如何将“msg”定义为机器人发送的最后一条消息。

回答

kanal.send(embed)返回一个承诺。您可以在此处使用 async/await 来获取该消息,以便稍后将其删除。检查以下代码;它应该在 5 秒后删除消息:

client.on('guildMemberAdd', async (member) => {
  const server = member.guild.id;
  if (server === '760511134079254610') {
    let kanal = client.channels.cache.get('786172941703970860');
    const embed = new Discord.MessageEmbed()
      .setTitle('Ho?geldin!')
      .setDescription(`**<@${member.user.id}>** kullan?c?s? sunucumuza geldi!`)
      .setColor('BLUE');

    try {
      const sentMessage = await kanal.send(embed);

      setTimeout(() => {
        sentMessage.delete();
      }, 5000);
    } catch (error) {
      console.log(error);
    }
  }
});

更新:Legendary Emoji提到,setTimeout你也可以使用具有如下timeout属性的选项对象sentMessage.delete

    try {
      const sentMessage = await kanal.send(embed);
      sentMessage.delete({ timeout: 5000 });
    } catch (error) {
      console.log(error);
    }
    // ...

  • It should work as expected. Just make sure you've enabled intents: https://discordjs.guide/popular-topics/intents.html#privileged-intents

以上是发送后如何删除消息?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>