Discord JS - 从附件下载图像

Posted

技术标签:

【中文标题】Discord JS - 从附件下载图像【英文标题】:Discord JS - Downloading an image from attachment 【发布时间】:2020-11-30 12:30:37 【问题描述】:

我只需要修复基本的东西;想从附件下载文件,但我不知道如何将附件描述为对象/文件。

我只有这个:

let jimage = message.attachments.first()
fs.writeFileSync(`./$jimage.filename`, jimage)

唯一的问题是,对于 FS 的第二个参数,discord 并没有只选择文件。我尝试这种方式的原因是因为我从这里得到了这个想法: how to save an image from discord using discord bot node js 但是“attachment.file”不是一个真实的东西。其他线程显示新调用的方法非常复杂,例如请求,我只想直接从 fs 和不和谐中执行此操作。

【问题讨论】:

如果 discord.js 提供了一个“attachment.file”缓冲区,其中只包含一个缓冲区或已设置的文件流,我会认为这是一个巨大的缺陷。这意味着 discord.js 会自动下载它看到的每个附件并将它们存储在内存中。哎呀!相反,您所拥有的只是文件的 URL。这是一个与任何其他网络链接一样的网络链接,您必须使用任何 HTTP 请求模块来请求 URL 并将图像下载到您的计算机。 见this *** post - 它应该回答你的问题。 【参考方案1】:

我在这里找到了一个非常简单的解决方案:

request(message.attachments.first().url).pipe(fs.createWriteStream('image.png'))

它基本上会找到文件在 discord 网站上的存储位置,并使用“请求”从那里获取文件。要保留文件名,您可以根据需要使用 message.attachments.first.name。不幸的是,我还没有找到如何保存文件类型。如果有任何问题,我会尽力帮助! 附言不要忘记定义和下载“请求”模块。

【讨论】:

以上是关于Discord JS - 从附件下载图像的主要内容,如果未能解决你的问题,请参考以下文章

从带有 discord.js 的链接下载图像,然后删除该文件

DIScord.js 将附件放入嵌入的缩略图中不显示

使用新生成的图像自动更新/编辑嵌入消息 - Discord.js

**已解决** discord.js guildMemberAdd() 未向对象添加正确的值

如何在嵌入 discord.js V13 时使用下载的图像

Discord.js 消息附件图片