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

Discord.js v13.1.0中从交互消息获取消息ID失败:调用interaction.reply返回undefined求助

解决Discord.js v13中interaction.reply无法获取消息对象的问题

你遇到的这个问题是Discord.js v13版本里的一个常见细节——默认情况下,interaction.reply()方法不会返回对应的消息对象,这就是你得到undefined的原因。

要获取到回复的消息对象(包括消息ID),你需要在reply的选项里加上fetchReply: true参数。这个参数会告诉Discord.js在发送回复后,主动去获取这条消息的完整对象并返回给你。

修改后的代码如下:

client.on('interactionCreate', async interaction => { 
  if(interaction.commandName === 'test') { 
    // 添加fetchReply: true选项
    let message = await interaction.reply({
      content: 'testing...',
      ephemeral: true,
      fetchReply: true
    }); 
    console.log(message); // 现在会输出完整的消息对象
    console.log(message.id); // 可以直接拿到消息ID了
  } 
});

补充说明:

  • 这个行为是Discord.js v13的设计变更,在更早的版本里reply()可能会直接返回消息,但v13为了性能优化,默认不再主动获取回复消息,需要显式开启fetchReply。
  • 即使是ephemeral(仅自己可见)的消息,只要加上fetchReply: true,你依然可以正常获取到它的消息对象和ID,因为这条消息对你的客户端是可见的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 14:37:29