Discord.js 斜杠命令类型 5

时间:2021-05-30 03:25:33

标签: discord.js

所以我最近一直在开发一个机器人,并且我已经将斜线命令实施到所述机器人中。我遇到了对 5 类命令“响应”的需求,但我似乎找不到关于斜杠命令的良好文档。我似乎无法让它“停止思考”。任何帮助将不胜感激!

编辑:我发现您需要编辑交互响应 (https://discord.com/developers/docs/interactions/slash-commands#interaction-response) 但我没有使用 webhooks 我正在使用机器人并且我不想获得另一个 npm 库,如果我不必。那么如何编辑我的互动?

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题,如果你想知道我是怎么做的,这里有一些代码。

如果您的交互响应者如下所示:

if (interaction.data.name === 'whatever') {
    whatever.whatever (interaction)//i am using a command handler to put 
    //the actual event into a different file
  }

你的“交互消息发送者”看起来像这样:(注意它是类型 5)

module.exports.whatever = (interaction) => {
    client.api.interactions(interaction.id, interaction.token).callback.post({
        data: {
            type: 5
        }
    })
};

然后它会用一个小省略号说“{botname} is thinking”,15 分钟后如果没有任何反应,它将导致交互失败。如果你想让它“停止思考”,你必须编辑消息。我正在使用 axios npm 库 (https://www.npmjs.com/package/axios),如果您只是输入此代码,它应该编辑您的交互消息。这与您的要求一起放在文件的顶部:

const axios = require('axios')
const appId = ''//bot id goes here

并且在您的文件底部附近的某个地方可能会放入:

const editInteraction = async (client, interaction, response) => {
    const data = typeof response === 'object' ? { embeds: [ response ] } : { content: response };
    const channel = await client.channels.resolve(interaction.channel_id);
    return axios
        .patch(`https://discord.com/api/v8/webhooks/${appId}/${interaction.token}/messages/@original`, data)
        .then((answer) => {
            return channel.messages.fetch(answer.data.id)
        })
};

然后您将拥有编辑消息的基本代码结构,现在您只需要编辑消息。为此,请在您的代码中执行以下操作:

  if (interaction.data.name === 'whatever') {
    whatever.whatever (interaction).then(m => {
    editInteraction(client, interaction, '>:(')//this will actually edit the message so 
    //instead of " >:( " put in what you want to edit you message to be
      })
  }

然后您可以运行该命令,它会说机器人正在思考,然后在您要运行的任何事件之后,它都会对其进行编辑以说出任何内容!