You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js v14交互HTTP响应无法发送文件问题求助

解决Discord.js v14 HTTP交互端点发送文件失败的问题

问题核心原因

你用app.post('/interactions')处理命令时,仅在files数组里传filename无效——HTTP交互响应要求明确提供文件的二进制内容(Buffer或Stream),而非单纯的本地路径。这和interactionCreate事件中自动处理路径的逻辑不同。

另外attachments参数用法错误:它用于引用已上传到Discord CDN的文件,不能直接传入本地文件路径,因此直接使用会导致交互失败。

解决方案

方法1:读取文件为Buffer(适合小文件)

引入fs模块,读取文件二进制内容后传入files的attachment字段:

const fs = require('fs');

// 在app.post('/interactions')的处理逻辑中
return response.send({
   type: InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE,
   data: {
      files: [{
         filename: "video.mp4",
         attachment: fs.readFileSync("./videos/video.mp4")
      }],
      content: "Test"
   },
});

方法2:使用Stream(适合大视频文件)

针对较大的视频,用Stream读取可避免内存占用过高:

const fs = require('fs');

// 在app.post('/interactions')的处理逻辑中
return response.send({
   type: InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE,
   data: {
      files: [{
         filename: "video.mp4",
         attachment: fs.createReadStream("./videos/video.mp4")
      }],
      content: "Test"
   },
});

额外注意事项

  • 确认本地文件路径正确,文件存在且机器人进程有读取权限
  • 注意Discord的文件大小限制:非Nitro用户上传视频最大为50MB

内容的提问来源于stack exchange,提问作者Jimba Jamiono

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 21:53:19