discord.js中member.avatarURL()设置embed缩略图不生效问题
Discord.js 入群欢迎Embed缩略图加载失败修复
故障原因
GuildMember.avatarURL()方法仅会返回用户在当前服务器设置的专属头像地址,绝大多数新入群用户不会单独配置服务器专属头像,此时该方法返回值为null,缩略图自然无法加载。- 代码中Footer配置的
iconURL为截断的无效地址,同样会导致页脚图标加载异常。
修复方案
使用GuildMember.displayAvatarURL()方法替代原有avatarURL()调用:该方法会自动做 fallback 处理,用户存在服务器专属头像时返回专属头像地址,不存在时自动返回用户全局账号头像地址,同时支持传入配置开启动态格式适配、指定图片尺寸,避免加载异常。
修正后可直接运行的代码:
// ---- GREETINGS ---- client.on('guildMemberAdd', member => { const exampleEmbed = new MessageEmbed() .setTitle('Welcome to the server :hatching_chick: ') // 修正原代码Wellcome拼写错误 .setDescription(`Hello <@${member.id}> don't forget to register ^^`) // 自动适配头像类型,开启动态图支持,指定256px分辨率 .setThumbnail(member.displayAvatarURL({ dynamic: true, size: 256 })) .setFooter({ text: "Please read pinned messages", iconURL: '替换为可公开访问的有效图标直链地址' // 原地址为截断无效地址,需替换 }); member.guild.channels.cache.get('981582630317338656').send({ embeds: [exampleEmbed] }); });
补充说明
- 如果需要强制展示用户全局账号头像,忽略服务器专属头像配置,可以直接调用
member.user.displayAvatarURL({ dynamic: true }) - 所有传入Embed的图片资源地址必须是公开可访问的完整直链,本地文件路径、残缺截断的链接都无法正常加载。
内容的提问来源于stack exchange,提问作者Nevada
相关产品推荐
相关产品推荐

