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

Discord.js v13 版本中 .then(m => m.delete({timeout:3000})) 延时删除写法替换方案

Discord.js v13 消息定时删除替代方案

核心变动说明

Discord.js v13 已正式移除Message.delete()方法的timeout配置参数,你原先v12版本的m.delete({ timeout: 3000 })写法已失效,需要手动通过setTimeout实现延迟删除逻辑。

一对一替代写法

将原先的链式调用写法:

.then(m => m.delete({ timeout: 3000 }))

替换为以下v13兼容写法即可:

.then(m => setTimeout(() => m.delete(), 3000))

修正后可直接运行的v13版本完整代码

case 'c':
case 'C':
    let parts = message.content.split(" ");
    // 注意:清理消息需要的是MANAGE_MESSAGES权限,你原先写的MANAGE_ROLES是管理角色权限,不符合需求
    if (!message.member.permissions.has(Discord.Permissions.FLAGS.MANAGE_MESSAGES)) {
        return message.channel.send("You don't have permission to do that!")
            .then(m => setTimeout(() => m.delete(), 3000))
    }
    if (!parts[1]) {
        return message.channel.send('You forgot the number')
            .then(m => setTimeout(() => m.delete(), 3000))
    }
    if (isNaN(parts[1])) {
        return message.channel.send('You need a number')
            .then(m => setTimeout(() => m.delete(), 3000))
    }
    const deleteCount = Number(parts[1])
    if (deleteCount > 100) {
        return message.channel.send("You can't delete more than 100 messages")
            .then(m => setTimeout(() => m.delete(), 3000))
    }
    if (deleteCount < 2) {
        return message.channel.send('You need to delete at least 2 messages')
            .then(m => setTimeout(() => m.delete(), 3000))
    }
    await message.channel.bulkDelete(deleteCount)
    message.channel.send(`I deleted ${deleteCount} messages`)
        .then(m => setTimeout(() => m.delete(), 3000))
    break;

额外注意事项

  • bulkDelete方法仅支持删除发送时间在14天以内的消息,超出时间范围的消息无法批量删除,需要单独调用删除接口处理
  • 如果你的项目已开启ESLint校验,建议为setTimeout添加清除逻辑避免内存泄漏,普通小型机器人可以忽略该要求

内容的提问来源于stack exchange,提问作者I need Help

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:36:05