为什么discord.js头像指令返回的图片分辨率很低?
问题修复方案
- 缺失格式参数导致Discord自动返回低分辨率资源
你当前的user.avatarURL()配置已经指定了2048的尺寸和动态格式支持,但是没有显式指定资源格式,Discord会默认返回压缩率较高的webp格式,部分场景下会触发分辨率降级。你可以补充format: 'png'参数,优先返回无损的png格式资源,动态gif头像会被dynamic: true参数覆盖,不影响动图展示。
修改后的参数配置如下:
user.avatarURL({size: 2048, dynamic: true, format: 'png'})
- discord.js版本差异导致参数不生效
如果你使用的是discord.js v13及以上版本,user.avatarURL()方法已经废弃,改用user.displayAvatarURL()方法,原有参数规则不变,替换方法即可生效。 - 默认头像平台限制
如果查询的用户没有自定义上传头像,使用的是Discord系统默认头像,官方提供的默认头像最大分辨率仅为256px,无论传入多大的size参数都无法获取更高清的资源,属于平台原生限制,无法通过代码调整。
修改后的完整适配代码:
module.exports = { name: 'avt', description: "获取用户头像", execute(message, args, Discord) { const user = message.mentions.users.first() || message.author; const avatarEmbed = new Discord.MessageEmbed() .setColor(0x333333) .setAuthor(user.username) // v12版本用下面这行 .setImage(user.avatarURL({size: 2048, dynamic: true, format: 'png'})); // v13及以上版本替换为下面这行 // .setImage(user.displayAvatarURL({size: 2048, dynamic: true, format: 'png'})); message.channel.send(avatarEmbed); } }
内容的提问来源于stack exchange,提问作者Labib Khan
相关产品推荐
相关产品推荐

