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
相关产品推荐
相关产品推荐

