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

