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

discord.js中sendFile报错,求通过Buffer发送文件的替代函数

解决discord.js中用Buffer发送文件的替代方案

嘿,这个问题我碰到过!client.sendFile是discord.js v11及更早版本的旧方法,在v12之后就被移除了,这就是你触发TypeError的原因。好在新版本提供了更灵活的方式,直接用Buffer发送文件,完全不需要依赖本地文件系统,刚好适配Heroku的环境。

下面是具体的替代写法,分两种常见场景:

1. 在普通消息事件中发送文件

如果是在messageCreate事件(v12+叫这个,旧版是message)里回复消息,直接用message.channel.send(),传入包含files数组的配置对象就行:

// 先获取你的Buffer数据
const fileBuffer = writer.toBuffer();

// 发送带文件的消息
message.channel.send({
  content: "Just a message",
  files: [
    {
      attachment: fileBuffer, // 这里传你的Buffer
      name: "file.png"        // 指定文件名
    }
  ]
});

2. 在交互(如Slash命令)中发送文件

如果是处理Slash命令这类交互,用interaction.reply()的写法类似:

const fileBuffer = writer.toBuffer();

interaction.reply({
  content: "Just a message",
  files: [
    {
      attachment: fileBuffer,
      name: "file.png"
    }
  ]
});

这种方式直接把Buffer数据传给discord.js,完全绕开了本地文件读写,完美解决Heroku无法访问文件系统的问题,而且从v12到最新的v14版本都支持这个写法哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:28:07