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

如何修复DiscordAPIError 10007 unknown member错误

修复DiscordAPIError 10007 (Unknown Member)错误

错误原因

这个错误意味着你尝试获取的成员不存在于当前服务器中,可能是用户已退出服务器、机器人缓存中无该用户数据,或是传入的用户ID无效。

具体修复方案

1. 添加成员存在性检查

在获取成员后先判断是否存在,避免后续代码报错:

// 替换原有的成员获取代码
const member = await interaction.guild.members.fetch(user.id).catch(err => null);

if (!member) {
  const notFoundEmbed = new EmbedBuilder()
    .setTitle("**Mibow so cutest**")
    .setDescription(`无法找到用户 \`${user.username}\`,该用户可能已退出服务器。`)
    .setColor(0xf44336)
    .setTimestamp();
  return interaction.reply({ embeds: [notFoundEmbed], ephemeral: true });
}

2. 直接使用用户ID封禁(可选)

如果你的核心需求是封禁用户,无需依赖成员对象检查角色层级(若需要检查则仍需先确认成员存在),可以直接调用服务器的封禁方法,即使用户已退服也能完成封禁:

// 替换原有的member.ban代码
try {
  await interaction.guild.ban(user.id, { reason });
  // 可在此添加成功提示
} catch (err) {
  const banErrEmbed = new EmbedBuilder()
    .setTitle("**Mibow so cutest**")
    .setDescription(`封禁 \`${user.username}\` 失敗,請檢查機器人權限。`)
    .setColor(0xf44336)
    .setTimestamp();
  return interaction.reply({ embeds: [banErrEmbed], ephemeral: true });
}

3. 验证机器人权限

确保机器人拥有Ban Members权限,且机器人角色的位置高于目标用户的角色(若目标用户仍在服务器中)。

修复后的完整代码

async execute(interaction) {
  const { options } = interaction;

  const user = options.getUser("target");
  const reason = options.getString("reason") || `\`ไม่ได้กรอกเหตุผล\``;

  // 尝试获取成员,捕获不存在的情况
  const member = await interaction.guild.members.fetch(user.id).catch(err => null);

  // 检查成员是否存在
  if (!member) {
    const notFoundEmbed = new EmbedBuilder()
      .setTitle("**Mibow so cutest**")
      .setDescription(`无法找到用户 \`${user.username}\`,该用户可能已退出服务器。`)
      .setColor(0xf44336)
      .setTimestamp();
    return interaction.reply({ embeds: [notFoundEmbed], ephemeral: true });
  }

  const errEmbed = new EmbedBuilder()
    .setTitle("**Mibow so cutest**")
    .setDescription(`คุณไม่สามารถใช้คำสั่งนี้กับ \`${user.username}\` ยศอาจจะสูงกว่าหรือเท่ากับตัวคุณ.`)
    .setColor(0xf44336)
    .setTimestamp();

  if (member.roles.highest.position >= interaction.member.roles.highest.position)
    return interaction.reply({ embeds: [errEmbed], ephemeral: true });

  // 执行封禁并处理可能的错误
  try {
    await member.ban({ reason });
    const successEmbed = new EmbedBuilder()
      .setTitle("**Mibow so cutest**")
      .setDescription(`已成功封禁 \`${user.username}\`\nเหตุผล: ${reason}`)
      .setColor(0x4caf50)
      .setTimestamp();
    return interaction.reply({ embeds: [successEmbed], ephemeral: true });
  } catch (err) {
    const banErrEmbed = new EmbedBuilder()
      .setTitle("**Mibow so cutest**")
      .setDescription(`封禁 \`${user.username}\` 失敗,請檢查機器人權限。`)
      .setColor(0xf44336)
      .setTimestamp();
    return interaction.reply({ embeds: [banErrEmbed], ephemeral: true });
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 12:51:16