如何引用以前的机器人消息?

分享于2023年02月22日 discord discord.js javascript node.js 问答
【问题标题】:How to reference to a previous bot message? (Discord.js v14)如何引用以前的机器人消息? (Discord.js v14)
【发布时间】:2023-02-19 19:37:55
【问题描述】:

我想在一段时间后更改特定消息的嵌入,但我一直无法正确获取对此消息的引用。有人能指出我正确的方向吗?

我首先尝试了这个:

const msgRef = await interaction.editReply({ embeds: [exampleEmbed_1] });
let todos = []
todos.push(msgRef)

但是当我尝试使用 msgRef 对象用另一个嵌入更新消息时:

const message = todos[0]
await message.edit({ embeds: [exampleEmbed_2] });

我得到一个错误:

TypeError: message.edit is not a function

在这一点上我有点困惑。我怎样才能正确获取特定消息的引用以便稍后更改内容?有没有办法通过消息 ID 搜索它?

  • 看起来您使用的是交互而不是消息,所以请记住,当您回复交互时,它不会返回您期望的“消息”,而是 InteractionResponse 。要编辑交互响应,您需要再次使用 editReply() 函数,而不仅仅是 edit 。尝试使用完全相同的代码,但将 message.edit 替换为 message.editReply

【解决方案1】:

您可以通过消息 ID 获取它,但您还需要发送它的频道的 ID,然后您可以使用 Client.channels.fetch('channel id').messages.fetch('message id') 方法,如果它存在,该方法将返回 Message 对象。

【讨论】: