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

DiscordJS V14中如何检查用户封禁状态及fetchBans报错解决

解决Discord.js v14中fetchBans失效的解封命令问题

问题说明

在Discord.js v14环境下编写解封命令时,原代码调用message.guild.fetchBans()触发错误TypeError: message.guild.fetchBans is not a function,无法正常获取封禁列表并执行解封操作。需求为:若目标用户处于封禁状态则解封,否则向用户返回错误提示。

错误根源

Discord.js v14对公会封禁相关API进行了版本迭代:

  • 移除了旧版的fetchBans()方法
  • 封禁列表获取改为guild.bans.fetch()
  • 解封操作从guild.members.unban()调整为guild.bans.remove()

修改后的完整代码

const { EmbedBuilder } = require("discord.js");
const { colors } = require("discordjs-colors-bundle");

module.exports = {
  config: {
    name: "unban",
    description: "Unban a member from the guild",
    usage: "unban [id]",
  },
  permissions: ["BanMembers"],
  owner: false,
  run: async (client, message, args, prefix, config, db) => {
    const userId = args.join(" ");

    if (!userId) {
      return message.reply({ content: `:x: | Please provide a ID to ban! ` });
    }

    // 替换为v14的封禁列表获取方法
    const banList = await message.guild.bans.fetch();
    const bannedUser = banList.find((user) => user.id === userId);

    const UnbannedEmbed = new EmbedBuilder()
      .setColor(colors.SeaBlue)
      .setTitle(`Unbanned`)
      .setDescription(`The user is unbanned!`)
      .setTimestamp()
      .setFooter({ text: `${message.guild.name}` });

    if (bannedUser) {
      // 替换为v14的解封方法,并添加await处理异步操作
      await message.guild.bans.remove(userId);
      message.reply({ embeds: [UnbannedEmbed] });
    } else {
      message.reply({ content: `:x: | The mentioned user is not banned!` });
    }
  },
};

核心修改点

  • 封禁列表获取:message.guild.fetchBans() → message.guild.bans.fetch()
  • 解封操作:message.guild.members.unban(userId) → await message.guild.bans.remove(userId)(必须添加await确保异步操作完成后再发送提示)

内容的提问来源于stack exchange,提问作者Mohtasim Alam Sohom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:37:41