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

discord.JS v13调用msg.delete报TypeError:不是函数问题求助

问题根因

你的Promise链式调用逻辑存在错误:

  • 第一个.then()回调内只执行了setTimeout编辑消息的操作,没有显式返回sentMessage实例
  • setTimeout本身无返回值(void类型),因此链式调用下一个.then()时接收到的msg参数不是消息对象,自然不存在delete方法,触发类型错误。

修复方案

推荐将编辑+延迟删除的逻辑合并到同一个.then()回调内,避免链式传值错误,修复后代码如下:

message.channel.bulkDelete(messages);

message.channel.send("Messages getting purged...")
.then((sentMessage) => {
  // 编辑消息的延迟时间可按需调整,你之前的代码未配置该参数默认是0
  setTimeout(() => {
    sentMessage.edit(` **${amount}** messages were purged!`)
  }, 3000)
  // 6秒后删除提示消息
  setTimeout(() => {
    sentMessage.delete()
  }, 6000)
})

额外注意点

  • 需确保你的机器人在对应频道拥有管理消息权限,否则删除消息操作会被拒绝
  • 如果你的代码上下文支持async/await语法,也可以改写为如下写法,可读性更高:
// 需放在async函数内执行
await message.channel.bulkDelete(messages);
const sentMessage = await message.channel.send("Messages getting purged...");
setTimeout(() => sentMessage.edit(` **${amount}** messages were purged!`), 3000);
setTimeout(() => sentMessage.delete(), 6000);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:36:04