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

Discord.js开发:如何获取用户服务器昵称并展示在embed标题中

代码调整方案

你当前代码中获取的user是Discord全局用户对象,仅存储跨服务器的全局用户名。要获取用户在当前服务器的昵称,需要获取当前服务器的成员实例(GuildMember),该实例的displayName属性会自动优先返回用户设置的服务器昵称,没有设置昵称时自动回退为全局用户名,完全匹配需求。

调整后的完整代码如下:

const Discord = require("discord.js"); 

exports.run = async (client, message, args) => {
  let user = message.mentions.users.first() || client.users.cache.get(args[0]) || message.author;
  // 新增:获取当前服务器内的成员实例
  let member = message.guild.members.cache.get(user.id);
  let avatar = user.avatarURL({ dynamic: true, format: "png", size: 1024 });

  let embed = new Discord.MessageEmbed() 
    .setColor(`#2f3136`) 
    // 修改:替换为成员的服务器显示名,无昵称时自动用全局用户名
    .setTitle(`${member.displayName}`) 
    .setDescription(`Clique **[aqui](${avatar})** para baixar o avatar.`)
    .setImage(avatar);
 await message.channel.send(embed); 

};

如果需要兼容指令可能在私信频道触发(无服务器对象)的场景,可以把标题部分改为容错写法:

.setTitle(`${member?.displayName || user.username}`)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:36:02