所以我最近一直在开发一个机器人,并且我已经将斜线命令实施到所述机器人中。我遇到了对 5 类命令“响应”的需求,但我似乎找不到关于斜杠命令的良好文档。我似乎无法让它“停止思考”。任何帮助将不胜感激!
编辑:我发现您需要编辑交互响应 (https://discord.com/developers/docs/interactions/slash-commands#interaction-response) 但我没有使用 webhooks 我正在使用机器人并且我不想获得另一个 npm 库,如果我不必。那么如何编辑我的互动?
答案 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
})
}
然后您可以运行该命令,它会说机器人正在思考,然后在您要运行的任何事件之后,它都会对其进行编辑以说出任何内容!