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

