【问题标题】:discord.js Editting Slash Command Interaction Messagesdiscord.js 编辑斜杠命令交互消息
【发布时间】:2021-07-02 20:40:04
【问题描述】:

所以我在这里使用 discord.js 和这段代码:

client.api.interactions(interaction.id, interaction.token).callback.post({
  data: {
    type: 4,
    data: {
      content: "Getting Data..."
    }
  }
})

我希望之后能够编辑此消息,但我看到的所有内容都需要一个消息 ID,而且我似乎无法从此代码中获取消息 ID。

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    您可以使用此补丁请求编辑交互响应(请参阅:Followup Messages):

    PATCH /webhooks/<application_id>/<interaction_token>/messages/@original
    

    使用axios library的基本示例:

    axios.patch(`https://discord.com/api/v8/webhooks/${appId}/${interaction.token}/messages/@original`, { content: 'New content' });
    

    此请求的答案也将包含 message-id。

    这是一个示例函数,它将以纯文本或嵌入对象的形式编辑原始消息,并返回不和谐的消息对象以供进一步使用(例如添加回复表情符号等):

    const editInteraction = async (client, interaction, response) => {
        // Set the data as embed if reponse is an embed object else as content
        const data = typeof response === 'object' ? { embeds: [ response ] } : { content: response };
        // Get the channel object by channel id:
        const channel = await client.channels.resolve(interaction.channel_id);
        // Edit the original interaction response:
        return axios
            .patch(`https://discord.com/api/v8/webhooks/${appId}/${interaction.token}/messages/@original`, data)
            .then((answer) => {
                // Return the message object:
                return channel.messages.fetch(answer.data.id)
            })
    };
    

    除了发送诸如“正在获取数据...”之类的初始消息之外,您还可以发送类型 5 的空响应。这是内置方法,也会显示一些加载动画:) See here (One优点是这种方式不会出现“已编辑”。)

    client.api.interactions(interaction.id, interaction.token).callback.post({
        data: {
            type: 5,
        },
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-31
      • 2021-10-19
      • 2021-12-15
      • 2022-01-07
      • 2021-10-17
      • 2021-06-06
      • 2022-01-03
      • 2022-11-26
      相关资源
      最近更新 更多