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

Discord.js部署Replit下载Discord附件PNG图片保存异常该如何解决?

问题根源

你当前的代码存在2个核心错误导致保存的图片无效:

  • Discord.js v12的MessageAttachment对象没有png属性,你调用a.png拿到的是undefined,写入文件的内容是空的无效数据,自然无法正常打开
  • 附件的实际内容存储在附件的url对应的远端资源,需要主动请求获取二进制流后再写入本地文件

解决方案

首先安装兼容Node v12版本的请求依赖:

npm install axios@0.27.2

修改后的完整代码如下:

const fs = require('fs');
const axios = require('axios');

client.on("message" , async msg => {
  if (msg.content === "$Time") {
    // 筛选出png格式的附件
    const pngAttachments = msg.attachments.filter(a => a.name.toLowerCase().endsWith('.png'));
    for (const a of pngAttachments) {
      // 请求获取图片二进制流
      const res = await axios.get(a.url, {
        responseType: 'arraybuffer'
      });
      // 写入本地文件,若要存入images目录需保证目录已存在
      fs.writeFileSync(`./${a.name}`, res.data);
    }
    
    setTimeout(function () { 
      msg.channel.send("Sure thing", {
        files: [`./images/SPOILER_HW.png`]
      })
    }, 5000);
  }    
})

注意事项

  • 如果需要把图片存入自定义目录(比如示例中的./images),需要提前确认目录存在,不存在时可以用fs.mkdirSync('./images', {recursive: true})提前创建
  • 存入自定义目录时,写入文件的路径要对应修改为./images/${a.name}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:36:01