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

Discord.js开发用户信息命令遇TypeError: Cannot read 'username' of null问题求助

解决Discord.js中TypeError: Cannot read properties of null (reading 'username')错误

问题分析

报错核心是interaction.options.getUser('target')返回了null,导致后续访问target.username时触发类型错误。即使你将用户选项设置为必填,仍可能因为以下原因出现这个问题:

  • Discord API缓存延迟,未正确返回用户对象
  • 目标用户已被删除或账号不存在
  • 交互数据中用户对象异常缺失

解决方案

修改你的execute函数,添加空值校验,并通过用户ID主动拉取最新用户数据,确保获取到有效的用户对象:

async execute(interaction) {
    let target = interaction.options.getUser('target');
    // 若getUser返回null,尝试通过ID直接拉取用户数据
    if (!target) {
        const userId = interaction.options.get('target').value;
        try {
            target = await interaction.client.users.fetch(userId);
        } catch (error) {
            return await interaction.reply({ 
                content: '无法找到指定用户,请确认用户ID或账号状态', 
                ephemeral: true 
            });
        }
    }
    // 构建并发送用户信息Embed
    const userinfo = new EmbedBuilder()
        .setTitle(target.username)
        .setColor(0xE12424)
        .setThumbnail(target.displayAvatarURL({ dynamic: true }))
    await interaction.reply({ embeds: [userinfo] });
}

关键改进点

  • 空值校验:先判断target是否存在,避免直接访问null的属性
  • 主动拉取用户:使用users.fetch绕过缓存,直接从Discord API获取最新用户数据
  • 错误反馈:捕获拉取失败的异常,给用户清晰的提示信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 14:22:48