You need to enable JavaScript to run this app. 如何让自定义Discord bot在发送embed消息5-6秒后自动删除该embed?
优惠活动
大模型
产品
解决方案
定价
更多

如何让自定义Discord bot在发送embed消息5-6秒后自动删除该embed?

实现方案

要实现警告embed自动删除的效果,你只需捕获机器人发送embed后返回的消息实例,为其添加延迟删除逻辑即可,完整修改后代码如下:

const Discord = require('discord.js');
const { Client, MessageEmbed } = require('discord.js');
const bot = new Client();
const token = 'tokenhere';

bot.on('ready', () =>{
    bot.user.setActivity('YOU', { type: 'WATCHING' });
    console.log('This bot is online!');
});

bot.on('message', message=>{
  const user = message.author;
  const swearWords = ["fuck", "dick", "pussy", "vagina", "bsdk", "saale", "kutte", "bitch", "die", "mf", "bish", "fag","ass","nigga","nigger","fack"];
  if (swearWords.some(word => message.content.toLowerCase().includes(word)) ) {
      const embed = new MessageEmbed()
                 .setTitle('Chat F!lter')
                  .setColor(0xff0000)
                  .setDescription('<@' + message.author.id + '> You have been caught being toxic! , You are muted for a minute');
                  // 修改部分:捕获发送的消息实例,添加延迟删除逻辑
                  message.channel.send(embed).then(warnMsg => {
                      // 5500毫秒即5.5秒后删除,可按需调整时间
                      setTimeout(() => {
                          warnMsg.delete().catch(err => console.log('警告消息删除失败,可能是权限不足:', err))
                      }, 5500)
                  });
                  const role = message.guild.roles.cache.find(x => x.name == 'muted'); 
    message.member.roles.add(role);
        setTimeout(() => {message.member.roles.remove(role)}, 60*1000);
  }});

bot.login(token);

核心修改说明

  • message.channel.send()方法会返回Promise对象,通过.then()可以拿到发送成功的警告消息实例
  • 给消息实例绑定5500毫秒的延迟删除定时器,满足你5-6秒自动删除的需求
  • 新增了.catch()错误捕获逻辑,避免机器人没有删除消息权限时抛出异常导致进程崩溃

内容的提问来源于stack exchange,提问作者Divyansh Jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 14:06:08