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

调用setNickname遇TypeError:Cannot read properties of undefined求助

问题原因

你遇到的错误是因为client.users.cache.get()获取到的是User对象,而setNickname()是Discord.js中GuildMember(服务器成员)专属的方法,User对象并没有这个方法,所以调用时会提示“无法读取undefined的setNickname属性”。

解决方案

要修改用户的服务器昵称,必须先获取对应服务器的GuildMember对象,而不是User对象。具体步骤如下:

  • 先确定目标用户所在的服务器ID,通过服务器ID获取Guild实例
  • 再从该Guild中获取目标用户的GuildMember对象
  • 调用setNickname()方法修改昵称

示例代码:

// 替换为目标服务器的ID
const guildId = "你的服务器ID";
const targetUserId = "930654978777948160";

// 方式1:从缓存获取(如果成员已被缓存)
const guild = client.guilds.cache.get(guildId);
const memberTarget = guild?.members.cache.get(targetUserId);

// 方式2:如果缓存中没有,使用fetch(需要异步)
// const guild = await client.guilds.fetch(guildId);
// const memberTarget = await guild.members.fetch(targetUserId);

if (memberTarget) {
  try {
    await memberTarget.setNickname("nickname");
    console.log("昵称修改成功");
  } catch (err) {
    console.error("修改昵称失败:", err);
  }
} else {
  console.log("未找到目标成员,或机器人不在该服务器中");
}
注意事项
  • 确保机器人已经加入目标服务器,并且拥有MANAGE_NICKNAMES权限
  • 如果使用fetch方法,需要将代码放在异步函数中,因为fetch是异步操作,需要用await等待结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 02:50:29