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

如何编写discord.js全员封禁命令?现有代码无法运行求解决

Discord全员封禁命令实现修复

原有代码问题

  • 语法结构错误:forEach 未传入合法回调函数,代码缺少闭合的花括号,执行逻辑写在了forEach的参数位之外
  • 调用属性错误:message.guild.member 是无效属性,ban方法只能针对单个成员实例调用
  • 成员拉取不全:仅访问members.cache默认只会拉取部分缓存的成员,无法覆盖全量服务器用户
  • 缺少权限校验:未判断命令触发者和机器人自身是否持有「封禁成员」权限,容易触发接口报错

修复后代码

// discord.js v14+ 版本适用,低版本适配方案见下方说明
client.on('messageCreate', async (message) => {
  // 只响应!test命令
  if (message.content !== '!test') return
  // 校验命令发送者权限
  if (!message.member.permissions.has('BanMembers')) return message.reply('你没有封禁成员权限')
  // 校验机器人自身权限
  if (!message.guild.members.me.permissions.has('BanMembers')) return message.reply('机器人没有封禁成员权限')
  
  try {
    // 拉取全量服务器成员
    const allMembers = await message.guild.members.fetch()
    // 遍历执行封禁
    allMembers.forEach(async (member) => {
      // 可按需开启排除逻辑,比如排除服务器所有者、机器人自己,避免操作后无法管理
      // if(member.id === message.guild.ownerId || member.id === client.user.id) return
      await member.ban({ reason: '教学测试封禁' }).catch(err => console.log(`封禁${member.user.tag}失败:`, err))
    })
    message.reply('封禁指令已执行')
  } catch (err) {
    console.log('执行失败:', err)
    message.reply('指令执行出错')
  }
})

补充说明

注意:本代码仅用于合法教学测试场景,请勿在未获得服务器所有人授权的公共服务器内使用,滥用Discord API进行恶意操作会导致账号和机器人被官方封禁。
如果你使用的是v12及以下版本的discord.js,将messageCreate事件改回message,权限字段改为BAN_MEMBERS即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:45:02