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
相关产品推荐
相关产品推荐

