You need to enable JavaScript to run this app. Discord.js slash commands type 5响应无法停止“思考”状态如何处理?
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js slash commands type 5响应无法停止“思考”状态如何处理?

Discord机器人Slash Command Type5响应消除思考状态实现方案

核心原理

你发送的Type 5(DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE)响应本质是告知Discord暂存交互、先展示加载状态,后续直接调用Discord原生REST接口编辑原始交互响应即可替换加载状态,无需依赖webhook配置,也不需要引入额外npm库,使用机器人token直接鉴权即可完成操作。

具体实现步骤

  • 首次响应Slash Command时正确返回Type 5,此时Discord会自动展示*「Bot正在思考」*的加载状态
  • 业务逻辑处理完成后,调用PATCH接口编辑原始交互响应,接口路径为https://discord.com/api/v10/webhooks/{机器人应用ID}/{interaction_token}/messages/@original
  • 接口请求成功后,原思考加载状态会自动替换为你返回的消息内容,加载状态同步消失

原生Node.js实现示例(无第三方依赖)

// 替换为自身对应参数
const APP_ID = "你的机器人应用ID";
const BOT_TOKEN = "你的机器人Token";
const interactionToken = "当前Slash Command触发的interaction对应token";
const replyBody = {
  content: "最终展示给用户的消息内容",
  // 可按需添加embeds、components等消息字段,格式与普通Discord消息一致
};

// 用Node.js原生https模块发送请求,无需引入任何npm库
const https = require("https");
const postData = JSON.stringify(replyBody);

const requestOptions = {
  hostname: "discord.com",
  port: 443,
  path: `/api/v10/webhooks/${APP_ID}/${interactionToken}/messages/@original`,
  method: "PATCH",
  headers: {
    "Content-Type": "application/json",
    "Authorization": `Bot ${BOT_TOKEN}`,
    "Content-Length": Buffer.byteLength(postData)
  }
};

const req = https.request(requestOptions, (res) => {
  let responseData = "";
  res.on("data", (chunk) => {
    responseData += chunk;
  });
  res.on("end", () => {
    // 响应处理完成,加载状态已消除
    console.log("交互编辑成功", responseData);
  });
});

req.on("error", (err) => {
  console.error("请求出错:", err);
});

req.write(postData);
req.end();

注意事项

  • interaction token有效期为交互触发后的15分钟,超过有效期后无法调用该接口编辑响应
  • 若需要返回仅触发用户可见的ephemeral消息,需在首次返回Type 5响应时就携带flags: 64参数,后续编辑时无需重复携带该字段
  • 仅需机器人已开通applications.commands权限即可调用该接口,无需额外配置webhook相关权限

内容的提问来源于stack exchange,提问作者lewis clark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 07:06:01