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

求助:Discord RichEmbed中的图片为何无法加载?

解决Discord富嵌入图片无法加载的问题

嘿,我来帮你搞定这个问题!你的嵌入图片显示空白,核心原因是你用的https://random.birb.pw/tweet/random是一个重定向链接,而Discord的嵌入系统不会自动跟随重定向去抓取实际的图片文件。这个链接本身并不是直接的图片地址,它会跳转到带后缀(比如.png)的真实小鸟图片URL,但Discord识别不了这种跳转逻辑,所以才显示空白。

下面是具体的解决步骤和修改后的代码:

1. 核心解决思路

先通过代码请求这个重定向链接,拿到它跳转后的实际图片URL,再把这个真实地址设置到嵌入里。同时要注意,Discord.js的RichEmbed已经被废弃,建议改用MessageEmbed,而且新版本的嵌入发送格式也有变化。

2. 修改后的完整代码

首先需要安装一个HTTP请求库(比如node-fetch)来获取重定向后的地址:

npm install node-fetch

然后替换你的原有代码:

const fetch = require('node-fetch');

client.on('message', async message => {
  if (message.content.startsWith(prefix + "birb")) {
    try {
      // 请求重定向链接,提取实际的图片地址
      const response = await fetch("https://random.birb.pw/tweet/random");
      const actualImageUrl = response.url;

      // 使用Discord.js推荐的MessageEmbed(替代已废弃的RichEmbed)
      const embed = new Discord.MessageEmbed()
        .setColor(0x9370db)
        .setAuthor("ModularBot: Birb", "https://i.imgur.com/Y9HlaCp.png")
        .setImage(actualImageUrl)
        .setFooter("Powered by random.birb.pw")
        .setTimestamp();

      // 新版本Discord.js发送嵌入的正确格式(v13+要求用embeds数组)
      message.channel.send({ embeds: [embed] });
    } catch (error) {
      // 处理请求失败的异常情况
      console.error('获取小鸟图片出错:', error);
      message.channel.send('哎呀,获取小鸟图片失败了,请稍后再试!');
    }
  }
});

3. 额外注意事项

  • 确保你的机器人所在服务器能正常访问random.birb.pw域名,没有被防火墙或代理拦截。
  • 如果你的Discord.js版本是v13及以上,必须用{ embeds: [embed] }的格式发送嵌入,旧的{embed}写法已经失效。
  • RichEmbed在Discord.js v12之后就被标记为废弃,虽然暂时还能运行,但推荐换成MessageEmbed避免后续版本的兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:42:20