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

DiscordJs v13发送Canvas欢迎图报错attachments[0].id必填如何解决

这是你代码使用方式错误导致的,并非Discord.js本身的问题。

错误原因

你使用的是Discord.js v13及以上版本,该版本对消息发送的参数规则做了调整:

  • attachments 字段现在仅用于上传后关联附件元数据(比如设置附件描述、复用已上传附件),不能直接传入附件实例
  • 附件实例需要放在 files 字段中传递,你当前的写法导致附件没有被正确识别,请求中的files字段为空,才触发了id缺失的报错。

修复方案

如果你使用Discord.js v13版本

仅需要调整send方法的参数结构即可:

welcomeChannel.send({
    content: `Welcome <@${member.user.id}>! Enjoy in ${guild.name}`,
    files: [attachment]
})

如果你使用Discord.js v14及以上版本

MessageAttachment 已重命名为 AttachmentBuilder,需要同步调整导入和实例化逻辑:

// 导入语句调整
const { AttachmentBuilder } = require('discord.js')

// 实例化附件调整
const attachment = new AttachmentBuilder(canvas.toBuffer(), { name: 'welcome.png' })

// 发送部分同样放在files字段
welcomeChannel.send({
    content: `Welcome <@${member.user.id}>! Enjoy in ${guild.name}`,
    files: [attachment]
})

你可以额外确认canvas.toBuffer()是否正常返回了Buffer对象、background.png的路径是否正确,避免后续出现图片加载异常的问题。

内容的提问来源于stack exchange,提问作者Game Insane

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:15:07