我正在嘗試制作一個不和諧的機器人,將發送給它的影像保存到一個檔案夾中,我收到了這個錯誤:
TypeError: [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received undefined.
這是我的代碼:
const Discord = require("discord.js");
const fs = require("fs");
const client = new Discord.Client();
var prefix = "."
client.on("ready", () => {
client.user.setStatus('online');
console.log("Bot is on.")
});
client.on("message", message => {
console.log(__dirname)
var image = message.attachments.first()
fs.writeFileSync(`./${image.name}`, image.file);
})
client.login(process.env.token);
注意:我使用的是 Discord.js v12.5.3
uj5u.com熱心網友回復:
上沒有檔案屬性attachments
。雖然有一個url
屬性,您可以從那里下載影像。您可以使用node-fetch
來獲取檔案(您需要通過npm i node-fetch@2
在命令列中運行來安裝它)。獲取檔案后,您可以使用fs.writeFileSync()
.
以下代碼作業正常:
// using discord.js v12
const { Client } = require('discord.js');
const fetch = require('node-fetch');
const fs = require('fs');
const client = new Client();
const prefix = '.';
client.on('message', async (message) => {
if (message.author.bot) return;
const image = message.attachments.first();
if (!image)
return console.log('No attached image found');
// add more if needed
const imageFiles = ['image/gif', 'image/jpeg', 'image/png', 'image/webp'];
if (!imageFiles.includes(image.contentType))
return console.log('Not an image file');
try {
const res = await fetch(image.url);
const buffer = await res.buffer();
fs.writeFileSync(`./${image.name}`, buffer);
} catch (error) {
console.log(`Error reading/writing image file:`, error);
}
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/493550.html
標籤:javascript 节点.js 图片 不和谐.js fs
下一篇:防止顯示未完全加載的影像