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

如何删除message.channel.send发送的消息及awaitMessages收集的用户消息

解决方案

以下是适配需求的完整修改后代码,基于你提供的原有逻辑调整:

message.channel.send(`你确认提交 strike 表单后,愿意随时接受日志审核人员的问询?如确认请输入 ***yes***。`).then(async (m) => {
    // 功能1:提示消息发送15秒后自动删除
    setTimeout(() => {
        // 容错处理:避免消息已提前删除时报错
        if (!m.deleted) m.delete().catch(err => console.log('提示消息删除失败:', err))
    }, 15000)

    message.channel.awaitMessages(response => response.content === 'yes', {
        max: 1,
        time: 10000,
        errors: ['time'],
    }).then(async (collected) => {
        // 功能2:删除用户发送的yes回复
        const userReply = collected.first()
        if (userReply && !userReply.deleted) {
            userReply.delete().catch(err => console.log('用户回复删除失败:', err))
        }
        // 此处保留你原有的后续业务逻辑
    }).catch(err => {
        // 超时未收到yes回复的错误处理,可自行扩展
        console.log('超时未收到用户确认回复')
    })
})

改动说明

  • 提示消息自动删除:拿到发送后返回的消息实例m后,通过setTimeout设置15秒延迟执行删除操作,新增了状态判断和异常捕获逻辑,避免消息提前被删除、机器人无删除权限等场景下代码报错。如果你使用的是Discord.js v12及更早版本,也可以直接用m.delete({ timeout: 15000 })的简写实现延迟删除,无需手动包裹setTimeout。
  • 用户回复自动删除:awaitMessages返回的collected是收集到的消息集合,调用first()方法即可获取用户发送的yes消息,直接执行删除操作即可,同样增加了容错处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:51:03