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

如何让Discord机器人获取用户服务器昵称而非默认用户名?

获取Discord服务器内成员的自定义昵称(而非默认用户名)

嘿,这个问题我太熟悉了!之前做公会机器人的时候也踩过这个坑——message.author确实只能拿到用户的全局Discord账号名,要获取他们在当前服务器设置的游戏昵称,得靠message.member这个对象。

核心方法

直接使用message.member.displayName就可以了:

  • 如果用户设置了服务器专属昵称,这个属性会返回该昵称;
  • 如果没设置,它会自动 fallback 到用户的默认Discord用户名,完美适配两种情况。

代码示例(以Discord.js v14为例)

client.on('messageCreate', async (message) => {
  // 避免机器人自己触发消息逻辑
  if (message.author.bot) return;

  // 获取当前服务器内的用户昵称
  const serverNick = message.member.displayName;
  await message.channel.send(`嘿,${serverNick}!我认出你的游戏昵称啦😉`);
});

注意事项

  1. 权限与Intent:确保你的机器人在Discord开发者门户中开启了Server Members Intent(服务器成员意图),同时机器人在目标服务器拥有查看成员的权限,否则message.member可能会返回undefined。
  2. 非message场景适配:如果是在交互事件(比如斜杠命令)里,你可以用interaction.member.displayName;如果需要通过用户ID获取某成员的昵称,可以先调用guild.members.fetch(userId)拿到GuildMember对象,再取displayName。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:42:44