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

Discord机器人如何实现发送的Embed消息在指定时间后自动删除

问题原因

这一问题通常由三个常见错误导致:

  • 构造MessageEmbed实例时缺少new关键字,低版本discord.js会因实例创建异常导致后续操作失效
  • discord.js v13及以上版本已经移除了message.delete()方法的timeout配置项,原有传参方式不再生效
  • discord.js v13及以上版本发送embed的参数已从单个embed对象改为embeds数组,旧写法会导致embed发送失败,自然无法触发后续删除逻辑

可行修复方案

使用原生setTimeout实现延迟删除,同时修正实例创建和消息发送的语法,补全错误捕获方便排查权限类问题,修改后代码如下:

// 补全new关键字正确创建Embed实例
const MuteEmbed = new Discord.MessageEmbed();
MuteEmbed.setTitle("🔇 Mute");
MuteEmbed.setDescription(`<@${mentionedMember.id}> wurde gemutet. Nutzer hat ${userLog[mentionedMember.id].length} mutes.\nGrund: ${reason}`);

// 修正embed传参格式为v13+兼容的数组写法
message.channel.send({ embeds: [MuteEmbed] }).then((sentMsg) => {
    // 用原生setTimeout实现延迟删除,兼容所有discord.js版本
    setTimeout(() => {
        sentMsg.delete().catch(err => console.error('消息删除失败:', err))
    }, 2000);
}).catch(err => console.error('消息发送失败:', err));

额外注意事项

需要确保机器人拥有对应频道的管理消息权限,否则删除操作会静默失败,新增的catch代码块可以快速定位权限、参数错误类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 15:27:03