【问题标题】:How do I get info from an embed?如何从嵌入中获取信息?
【发布时间】:2021-04-22 05:42:26
【问题描述】:

我一直在发出建议命令,我想要它,以便我可以使用-approve <The message id> 来编辑消息。问题是当我尝试从中获取信息时使用

const Suggestionchannel = client.channels.cache.get("833796404383973442");
const messages = Suggestionchannel.messages.fetch({ limit: 100 })

它只获取所有消息而不是嵌入。我希望它获取嵌入,以便我可以获取数据并通过其 ID 编辑消息。有了这些数据,我可以显示谁提出了建议以及建议是什么,同时显示它被批准了。如何使用消息 ID 从嵌入中获取信息?

附带说明:我知道我可以使用 async 和 await 在同一代码上轻松编辑它,但我希望它可以访问。如果我这样做并重新启动机器人,我将无法批准以前的建议,只有重新启动机器人后的新建议。

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:

    首先,您必须等待从建议频道获取消息,或者将其放入 .then 以不让 messages 成为 Promise。等待它不会改变您编辑消息的能力,您只需确保您的消息缓存中包含实际消息。

    从频道获取消息将返回Promise<Collection<Snowflake, Message>>。解析消息后,您将获得一个包含消息的集合。在 Message 类上,有一个名为 embeds 的数组。它包含消息的所有嵌入部分,通常,如果由机器人发送,则仅包含一个MessageEmbed

    另一件事是,为了方便您,获取消息还接受消息 ID,如果提供,它将从频道中获取具有该 ID 的消息。这样做会改变它返回到Promise<Message>

    在您的代码中实现所有这些更改看起来像这样;

    const Suggestionchannel = client.channels.cache.get("833796404383973442");
    // make sure that your outer scope is asynchronous
    const message = await Suggestionchannel.messages.fetch('INSERT MESSAGE ID OR VARIABLE HERE')
    const embed = message.embeds[0]
    //would be undefined if there is no embed
    //would be a MessageEmbed if there is an embed
    

    【讨论】:

      猜你喜欢
      • 2021-01-09
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 2020-09-05
      • 2016-12-16
      • 2021-12-12
      • 2012-04-04
      • 2020-09-07
      相关资源
      最近更新 更多