discord.js机器人无法延迟5秒删除消息且运行报错求助
问题原因
- 你使用的discord.js为v13及以上版本,存在两处不兼容写法:
- 旧版
message事件已被废弃,替换为messageCreate事件 Message.delete()方法传参规则变更:旧版本可直接传入毫秒数作为延迟删除时间,新版本要求传入配置对象才能设置延迟,直接传数字会触发类型不匹配错误
- 旧版
- 异步方法
delete返回Promise,你未添加异常捕获逻辑,因此抛出未处理的Promise拒绝警告
修复方案
适用于discord.js v13版本
client.on('messageCreate', message => { // 过滤机器人自身消息避免循环触发 if (message.author.bot) return; if (message.content.toLowerCase().includes(",")) { // 传入配置对象设置延迟,同时添加catch捕获异常 message.delete({ timeout: 5000 }) .catch(err => console.error('删除消息失败:', err)); } });
适用于discord.js v14及以上版本
v14版本已移除delete方法的内置延迟参数,需要手动通过setTimeout实现5秒延迟删除:
client.on('messageCreate', message => { if (message.author.bot) return; if (message.content.toLowerCase().includes(",")) { setTimeout(() => { message.delete().catch(err => console.error('删除消息失败:', err)); }, 5000); } });
内容的提问来源于stack exchange,提问作者Zeudon
相关产品推荐
相关产品推荐

