discord.js V12中,me命令报错:member.displayAvatarURL不是函数
解决Discord.js中
TypeError: member.displayAvatarURL is not a function的问题 我刚看了你的代码,遇到的这个错误其实很好解决——你混淆了GuildMember和User对象的属性方法!
错误原因
你代码里的member是GuildMember实例(message.guild.member(message.member)拿到的就是公会成员对象),而displayAvatarURL()是User对象的专属方法,GuildMember本身并没有这个方法。所以你需要通过member.user来调用头像获取方法。
额外的代码优化点
你判断昵称的语句写法有问题:
if(nickName == null || undefined) nickName = "None";
这里的|| undefined逻辑无效,应该改成if(nickName == null),因为== null会同时匹配null和undefined,能更简洁准确地处理昵称不存在的情况。
修正后的完整代码
var member = message.member; // 简化代码,message.member本身就是GuildMember实例 var status = member.presence.status; var nickName = member.nickname; if(nickName == null) nickName = "None"; // 修正判断逻辑 var accountCreated = moment(member.user.createdAt).format("LL"); // 从User对象取账号创建时间更准确 var joinedGuild = moment(member.joinedAt).format("LL"); var game = member.presence.activities[0] ? member.presence.activities[0].name : "None"; var botEmbed = new discord.MessageEmbed() .setTitle(`USER INFO`) .setDescription(`See info about ${member.user.username} below!`) // 从User对象取用户名 .setColor(embedColor) .setFooter(embedFooter) .setTimestamp() .setThumbnail(member.user.displayAvatarURL({size: 4096})) // 核心修正:通过member.user调用头像方法 .addFields( {name: "User Name", value: member.user.username, inline: true}, {name: "User ID", value: member.user.id, inline: true}, // 从User对象取用户ID {name: "User Account Created", value: accountCreated, inline: true}, {name: "", value: ""}, {name: "User Status", value: status, inline: true}, {name: "User Game", value: game, inline: true}, {name: "User Nickname", value: nickName, inline: true}, {name: "", value: ""}, {name: "User Joined Server At", value: joinedGuild} ); return message.channel.send(botEmbed);
内容的提问来源于stack exchange,提问作者SkyblockSquad Guild
相关产品推荐
相关产品推荐

