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

Discord.js TypeError: interaction.options.getUser不是函数的解决方法

解决Discord.js v13中interaction.options.getUser is not a function错误

错误核心原因

Discord.js v13里,interaction.options.getUser()仅能在已定义USER类型选项的斜杠命令中调用。如果命令未配置对应选项、调用语法错误,或是混淆了v13与v14的API差异,就会触发这个报错。

分步修复方案

1. 检查并修正斜杠命令的选项定义

确保注册/profil命令时,正确配置用户类型选项(若需要指定目标用户)。示例注册代码:

const { SlashCommandBuilder } = require('@discordjs/builders');

module.exports = {
  data: new SlashCommandBuilder()
    .setName('profil')
    .setDescription('展示用户个人资料')
    // 可选:添加用户选项,允许指定目标用户,不填则默认调用者
    .addUserOption(option =>
      option.setName('user')
        .setDescription('要查看的用户')
        .setRequired(false)),
  async execute(interaction) {
    // 执行逻辑写在这里
  },
};

2. 修正选项获取代码

在命令执行函数中,按v13语法正确获取用户:

const { MessageEmbed } = require('discord.js');

async execute(interaction) {
  // 获取指定用户,无输入则默认使用命令调用者
  const targetUser = interaction.options.getUser('user') || interaction.user;
  
  // 构建个人资料嵌入消息
  const profileEmbed = new MessageEmbed()
    .setColor('#0099ff')
    .setTitle(`${targetUser.tag} 的个人资料`)
    .setThumbnail(targetUser.displayAvatarURL({ dynamic: true }))
    .addFields(
      { name: '用户ID', value: targetUser.id, inline: true },
      { name: '账号创建时间', value: targetUser.createdAt.toLocaleString(), inline: true },
      { name: '加入服务器时间', value: interaction.guild.members.cache.get(targetUser.id).joinedAt.toLocaleString(), inline: true }
    )
    .setTimestamp();

  await interaction.reply({ embeds: [profileEmbed] });
}

3. 确认依赖版本兼容性

确保项目依赖版本正确:

  • 检查Discord.js版本:
npm list discord.js
  • 若版本不符,重新安装指定版本:
npm install discord.js@13.15.1
  • 配套依赖需兼容v13,安装对应版本:
npm install @discordjs/builders@0.16.0 discord-api-types@0.33.5

4. 重新部署斜杠命令

修改命令定义后,必须重新运行部署脚本,让Discord服务器同步更新命令结构,否则新选项不会生效。

额外排查点

如果以上步骤无效,检查错误栈指向的代码行:

  • 确认是否误将interaction对象当成了普通消息对象message
  • 确认是否在非斜杠命令交互(如按钮、菜单交互)中错误调用了getUser()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:07:22