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

