如何让自定义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
相关产品推荐
相关产品推荐

