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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:59:57