如何在Discord.js v14的Embed.setImage()中添加Canvas生成的附件?
如何在Discord.js v14中将Canvas生成的图片嵌入Embed?
你当前的写法错误在于直接将AttachmentBuilder实例传给了setImage(),Embed.setImage()需要的是指向附件的特殊URL格式,而非AttachmentBuilder对象,同时必须在回复时显式传入附件列表。
正确实现步骤如下:
- 生成Canvas图片的AttachmentBuilder实例并指定文件名
- 创建Embed时,使用
attachment://文件名作为setImage的参数 - 在回复时,同时传入embeds数组和attachments数组
完整代码示例:
const { AttachmentBuilder, EmbedBuilder } = require('discord.js'); // 假设canvas是已生成好的Canvas实例 const attach = new AttachmentBuilder(canvas.toBuffer(), { name: "image.png" }); const embed = new EmbedBuilder() .setTitle("title cool") .setColor("5865F2") .setImage("attachment://image.png"); // 用attachment://+文件名指向附件 interaction.reply({ embeds: [embed], attachments: [attach] // 必须在此处传入附件 });
额外注意事项:
- 确保AttachmentBuilder的
name参数和setImage中的文件名完全一致(包括后缀) - 若canvas.toBuffer()生成的格式有问题,可显式指定格式:
canvas.toBuffer('image/png') - 确认你的Discord.js版本为v14.x,AttachmentBuilder是v14的专属类(v13使用MessageAttachment)
内容的提问来源于stack exchange,提问作者Buenuuu
相关产品推荐
相关产品推荐

