You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js:如何让机器人发送消息后自动删除该消息?

实现机器人消息自动删除的解决方案

在Discord.js里,要让机器人发送的提示消息5秒后自动删除,你可以通过保存发送后的消息对象,配合setTimeout定时调用删除方法来实现。下面是修改后的完整代码:

client.on("messageCreate", (message) => {
    const args = message.content.slice(prefix.length).trim().split(/ +/g);
    const command = args.shift().toLowerCase();

    if(command === 'purge'){
        // 批量删除消息,同时处理异步结果
        message.channel.bulkDelete(args[0])
            .then(() => {
                // 发送清理成功的提示,并设置5秒后自动删除
                message.channel.send(`Cleared ${args[0]} messages`)
                    .then(sentMsg => setTimeout(() => sentMsg.delete(), 5000));
                // 删除用户触发命令的原始消息
                message.delete();
            })
            .catch(err => {
                // 处理批量删除失败的情况,错误提示也会自动删除
                message.channel.send(`清理消息失败:${err.message}`)
                    .then(errMsg => setTimeout(() => errMsg.delete(), 5000));
            });
    };
});

关键修正点:

  • 你之前用的message.delete(message.author == client)写法错误,message.delete()不需要传条件参数,直接调用就能删除用户发的命令消息。
  • 机器人发送的消息必须先存为变量(比如sentMsg),才能对它调用删除方法,通过setTimeout延迟5000毫秒执行删除操作。
  • 加入.then()和.catch()处理异步操作的结果,避免批量删除失败时没有反馈,同时错误提示也会自动清理。

内容的提问来源于stack exchange,提问作者Susan Santos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:20:22