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

如何修改Discord机器人服务器昵称?setNickname调用报错如何解决

错误原因

client.user 是机器人的全局用户对象,仅支持修改全局用户名,不存在 setNickname 方法,所以触发了类型错误。
服务器昵称是机器人在单个服务器内的专属属性,需要获取机器人在对应服务器的成员(GuildMember)实例后,调用对应方法修改。你代码中的 client.user.setActivity 写法正确,状态是全局生效的,无需调整。

前置权限要求
  • 机器人在目标服务器内被授予「更改昵称」权限
  • 机器人的角色层级高于自身的默认角色位置,否则会因权限不足修改失败
正确实现

单服务器场景(仅修改指定服务器昵称)

替换代码中 client.user.setNickname(...) 部分即可:

// 替换为你的目标服务器ID
const TARGET_GUILD_ID = "你的服务器ID字符串";
const targetGuild = client.guilds.cache.get(TARGET_GUILD_ID);
if (targetGuild) {
  // 获取机器人在当前服务器的成员实例
  const botMember = targetGuild.members.me;
  botMember.setNickname("Coin Price" + price.toFixed(5) + "$")
    .catch(err => console.log('昵称修改失败:', err.message));
}

多服务器场景(同步修改所有加入服务器的昵称)

如果需要机器人在所有加入的服务器同步价格昵称,用遍历写法:

client.guilds.cache.forEach(guild => {
  const botMember = guild.members.me;
  // 校验成员实例存在再修改,避免单个服务器报错中断流程
  botMember?.setNickname("Coin Price" + price.toFixed(5) + "$")
    .catch(err => console.log(`服务器${guild.name}昵称修改失败:`, err.message));
})
版本兼容提示

如果使用 discord.js v12 以下的旧版本,获取成员实例的写法需要替换为 guild.member(client.user)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:45:04