Discord.js v14 附件无法在Embed中显示问题求助
问题排查与修复
你的代码存在逻辑错误,导致图片无法正常显示在Embed中:
核心问题:条件判断逻辑写反
你写的if(interaction.options.getAttachment('image') == !null)等价于if(attachment == true)——因为!null的运算结果是布尔值true。但getAttachment('image')返回的要么是附件对象要么是null,永远不可能等于true,所以代码永远会走到else分支,创建带"No Image"标题的Embed,自然看不到上传的图片。
修正后的代码
只需要把条件改成判断附件是否存在即可,这里提供两种简洁的写法:
写法1:直接判断对象是否存在
const attachment = interaction.options.getAttachment('image'); const embed = new EmbedBuilder(); if (attachment) { embed.setImage(attachment.url); } else { embed.setTitle('No Image'); }
写法2:用!= null明确判断
const attachment = interaction.options.getAttachment('image'); let embed; if (attachment != null) { embed = new EmbedBuilder().setImage(attachment.url); } else { embed = new EmbedBuilder().setTitle('No Image'); }
额外优化建议
- 可以增加对
attachment.url的存在性检查,避免意外报错:if (attachment && attachment.url) { embed.setImage(attachment.url); } - 尽量使用
const/let代替var,避免变量提升带来的潜在问题。
内容的提问来源于stack exchange,提问作者Sreyas Menon
相关产品推荐
相关产品推荐

