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

如何在Discord.js v14的Embed.setImage()中添加Canvas生成的附件?

如何在Discord.js v14中将Canvas生成的图片嵌入Embed?

你当前的写法错误在于直接将AttachmentBuilder实例传给了setImage(),Embed.setImage()需要的是指向附件的特殊URL格式,而非AttachmentBuilder对象,同时必须在回复时显式传入附件列表。

正确实现步骤如下:

  1. 生成Canvas图片的AttachmentBuilder实例并指定文件名
  2. 创建Embed时,使用attachment://文件名作为setImage的参数
  3. 在回复时,同时传入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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:55:18