javascript 如何在发送邮件后将其删除?

kgsdhlau  于 2022-10-30  发布在  Java
关注(0)|答案(2)|浏览(102)

我有一个代码,当一个成员加入公会时会发送一条消息,我想在不久后删除它。
我的代码:

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”作为最后一个msg的机器人发送。

rjjhvcjd

rjjhvcjd1#

kanal.send(embed)返回一个promise。您可以在这里使用async/await获取该消息,以便稍后删除它。请检查以下代码;它应该在5s:

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,您还可以在sentMessage.delete中使用带有timeout属性的options对象,如下所示:

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

sdnqo3pr2#

这很简单,你只需要做

kanal.send(embed).then(sentMessage => {
sentMessage.delete()
})

这将发送消息,然后立即删除它。但玩家将收到提及和/或桌面通知

相关问题