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

Discord.js userinfo命令报Cannot read property 'user' of undefined如何解决

问题定位与修复方案

1. 报错核心原因

你遇到的TypeError: Cannot read property 'user' of undefined错误由两个上下文调用错误直接导致:

  • 你的execute方法已经将message作为入参传入,但代码中所有相关调用都错误写为this.message,类实例的this对象上不存在message属性,this.message为undefined,访问它的任何属性都会抛出错误
  • 代码中if(this.member.user.id == message.guild.ownerID)这行错误将局部变量member写为this.member,this.member同样是undefined,访问它的user属性就是你遇到的直接报错点

2. 其他潜在问题修复

  • 权限判断逻辑错误:原有if(!permissions.length == 0)逻辑完全写反,正确应该是当权限列表为空时添加「无关键权限」提示
  • 未定义status映射对象:代码中使用status[member.user.presence.status]但未提前定义status变量,会抛出未定义错误
  • 业务逻辑不一致:部分属性调用误用入参message(比如创建时间取了触发命令的用户而非查询用户、页脚ID显示错误)
  • API调用错误:displayAvatarURL是方法不是属性,需要加括号调用displayAvatarURL()
  • 发送格式兼容问题:新版discord.js要求embed用embeds数组格式传递,避免后续升级报错

3. 修复后完整代码

const Discord = require('discord.js');
const moment = require('moment'); // 确保已安装moment库:npm i moment

static description = 'Get information on a mentioned user.';
static usage = '<@user|id>';
static names = ['userinfo', 'ui'];
static userPerms = [];
static botPerms = [];

// 提前定义状态映射
const status = {
  online: '在线',
  idle: '离开',
  dnd: '请勿打扰',
  offline: '离线'
};

async execute(client, message) {
  var permissions = [];
  var acknowledgements = 'None';
  const args = message.content.trim().split(/ +/g);
  const user = message.mentions.users.first() || message.author;
  const member = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.member;
  const randomColor = "#000000".replace(/0/g, function () { return (~~(Math.random() * 16)).toString(16); }); 

  // 权限判断
  if(message.member.hasPermission("KICK_MEMBERS")) permissions.push("Kick Members");
  if(message.member.hasPermission("BAN_MEMBERS")) permissions.push("Ban Members");
  if(message.member.hasPermission("ADMINISTRATOR")) permissions.push("Administrator");
  if(message.member.hasPermission("MANAGE_MESSAGES")) permissions.push("Manage Messages");
  if(message.member.hasPermission("MANAGE_CHANNELS")) permissions.push("Manage Channels");
  if(message.member.hasPermission("MENTION_EVERYONE")) permissions.push("Mention Everyone");
  if(message.member.hasPermission("MANAGE_NICKNAMES")) permissions.push("Manage Nicknames");
  if(message.member.hasPermission("MANAGE_ROLES")) permissions.push("Manage Roles");
  if(message.member.hasPermission("MANAGE_WEBHOOKS")) permissions.push("Manage Webhooks");
  if(message.member.hasPermission("MANAGE_EMOJIS")) permissions.push("Manage Emojis");

  // 修复权限为空的判断逻辑
  if(permissions.length === 0){
    permissions.push("No Key Permissions Found");
  }

  // 修复this.member的错误调用
  if(member.user.id == message.guild.ownerID){
    acknowledgements = 'Server Owner';
  }

  const embed = new Discord.MessageEmbed()
    .setDescription(`<@${member.user.id}>`)
    .setAuthor(`${member.user.tag}`, member.user.displayAvatarURL())
    .setColor(randomColor)
    .setFooter(`ID: ${member.user.id}`)
    .setThumbnail(member.user.displayAvatarURL())
    .setTimestamp()
    .addField("Status",`${status[member.user.presence.status]}`, true)
    .addField('Joined at: ',`${moment(member.joinedAt).format("dddd, MMMM Do YYYY, HH:mm:ss")}`, true)
    .addField("Created at: ",`${moment(member.user.createdAt).format("dddd, MMMM Do YYYY, HH:mm:ss")}`, true)
    .addField("Permissions: ", `${permissions.join(', ')}`, true)
    .addField(`Roles [${member.roles.cache.filter(r => r.id !== message.guild.id).map(roles => `\`${roles.name}\``).length}]`,`${member.roles.cache.filter(r => r.id !== message.guild.id).map(roles => `<@&${roles.id }>`).join(" **|** ") || "No Roles"}`, true)
    .addField("Acknowledgements: ", `${acknowledgements}`, true);
    
  // 兼容新旧版discord.js的embed发送格式
  message.channel.send({ embeds: [embed] }).catch(err => message.channel.send({ embed: embed }));
}

内容的提问来源于stack exchange,提问作者Th3-Dragon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:15:02