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
相关产品推荐
相关产品推荐

