gpt4 book ai didi

javascript - DiscordJS Canvas 附件未完全发送?

转载 作者:行者123 更新时间:2023-12-01 15:45:41 24 4
gpt4 key购买 nike

我目前正在为我的机器人使用 Discord.js 和 Node,它以设定的时间间隔发送附件。我遇到了一个问题,有时附件没有完全加载(它们无限期地加载,只有当我点击“打开原件”时,我才能看到图像的前几个像素)。为什么是这样?是不是因为发送附件时附件文件不完整?
将图像添加到文件

async function makeCanvas(img, code, channel) {
const canvas = createCanvas(900, 1375);
const ctx = canvas.getContext("2d");
ctx.fillStyle = "#000000";
ctx.fillRect(0, 1255, 900, 120);
let image = await loadImage(img);
ctx.drawImage(image, 0, -40);
ctx.font = "bold 100px sans-serif'";
ctx.textAlign = "center";
ctx.fillStyle = "#FFFFFF";
ctx.fillText(`${code}`, 435, 1350);
const writeable = fs.createWriteStream(`./temp/${channel.id}.png`);
const readable = canvas.createPNGStream();
const connection = readable.pipe(writeable);
return connection.path;
}
发送附件
const imgCode = await applyCodeToImg(url, code, message.channel);
await message.channel.send("A new attachment has appeared!", new Discord.MessageAttachment(imgCode));
我对 JavaScript 和 Node 还是很陌生,请多多包涵!

最佳答案

您可以使用

message.channel.send("message", { files: [canvas.toBuffer()] });

const attachment = new Discord.MessageAttachment(canvas.toBuffer(), 'image.png');

message.channel.send("message", attachment);
要直接发送附件,而不使用 fs 保存,请务必查看 Canvas#toBuffer()有关 API 和 discordjs.guide 的更多信息关于基本图像加载。

关于javascript - DiscordJS Canvas 附件未完全发送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62864359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com