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

Discord.js用户信息斜杠命令异常问题求助

问题定位与修复方案

1. 「Server Member Since」显示<t:NaN:R>的问题

原因:你操作的target大概率是User对象,而User对象没有joinedTimestamp属性——这个属性仅属于GuildMember(服务器成员)对象。用User的joinedTimestamp会得到undefined,代入时间格式化标签后就会出现NaN。

修复方式:从当前服务器中获取目标用户的GuildMember实例,而非直接使用交互参数里的User对象:

// 先拿到交互参数里的User对象(或默认用命令发起者)
const user = interaction.options.getUser('target') || interaction.user;
// 从服务器获取对应的GuildMember实例
const targetMember = await interaction.guild.members.fetch(user.id);
// 正确格式化加入时间
const joinedAt = `<t:${Math.floor(targetMember.joinedTimestamp / 1000)}:R>`;

2. 「Roles Info」全显示“No roles found”的问题

原因:同样是误操作了User对象而非GuildMember对象,User没有roles属性;另外即使拿到GuildMember,默认会包含@everyone角色,需要排除才会显示有效角色列表。

修复方式:使用GuildMember的roles.cache获取角色列表,过滤掉@everyone,最高角色直接调用内置属性:

// 基于上面获取的targetMember
const rolesList = targetMember.roles.cache
  .filter(role => role.id !== interaction.guild.id) // 排除@everyone角色
  .sort((a, b) => b.position - a.position) // 按角色权限从高到低排序
  .map(role => `<@&${role.id}>`)
  .join(', ') || "No roles found";

const highestRole = targetMember.roles.highest.id !== interaction.guild.id 
  ? `<@&${targetMember.roles.highest.id}>` 
  : "N/A";

核心代码片段示例

async function execute(interaction) {
  try {
    // 提前判断是否在服务器内执行命令(DM中无guild)
    if (!interaction.guild) {
      return interaction.reply({ content: '此命令仅能在服务器内使用', ephemeral: true });
    }

    const user = interaction.options.getUser('target') || interaction.user;
    const targetMember = await interaction.guild.members.fetch(user.id);

    // 处理加入时间
    const joinedAt = `<t:${Math.floor(targetMember.joinedTimestamp / 1000)}:R>`;

    // 处理角色信息
    const rolesList = targetMember.roles.cache
      .filter(role => role.id !== interaction.guild.id)
      .sort((a, b) => b.position - a.position)
      .map(role => `<@&${role.id}>`)
      .join(', ') || "No roles found";

    const highestRole = targetMember.roles.highest.id !== interaction.guild.id 
      ? `<@&${targetMember.roles.highest.id}>` 
      : "N/A";

    // 回复用户信息
    await interaction.reply({
      embeds: [
        {
          title: `${user.tag} 的服务器信息`,
          fields: [
            { name: 'Server Member Since', value: joinedAt, inline: true },
            { name: 'Highest Role', value: highestRole, inline: true },
            { name: 'Roles Info', value: rolesList }
          ]
        }
      ]
    });
  } catch (error) {
    console.error(error);
    await interaction.reply({ content: '获取用户信息失败,请重试', ephemeral: true });
  }
}

注意:确保机器人拥有GuildMembers权限,否则无法正常获取服务器成员信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 08:37:12