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

使用WOKcommands开发Discord.js踢人命令时遇Error: A client is required错误

问题

使用WOKcommands在discord.js中开发封禁命令时,运行命令始终抛出以下错误:

Error: A client is required

对应的代码如下:

const { Client, GatewayIntentBits } =  require('discord.js')
const Commands = require("wokcommands")
require('dotenv/config')


const client = new Client({
    partials: ["MESSAGE", "REACTION"],
    intents: [
        GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildMessages,
        GatewayIntentBits.MessageContent,
    ]
})

client.on('ready', () => {
    console.log('Bee-bot has started')
    client.user.setActivity('The commands')
    new Commands(client, { commandsDir: "commands"})
})



client.on('messageCreate', message => {
    if (message.content === 'bee help') {
        message.reply('Welcome the to Bee-bot Help pane.\nThe prefix is "bee" and it is case sensitive.\nbee help: displays the help pane.\nbee ban: bans a user')

    }
})

client.on('messageCreate', message => {
  if (message.content === 'bee ban') {
    if (message.member.permissions.has("BAN_MEMBERS")) {
        if (message.members.mentions.first()) {
            try {
                MessageChannel.members.mentions.first().ban();
            } catch {
                message.reply("I do not have permissions to ban" + message.members.mentions.first());
            }
        } else {
            message.reply("You do not have permissions to ban" + message.members.mentions.first());
        }
    }
  }
})
client.login(process.env.TOKEN)

尝试修改变量名后,错误依然存在。

解决方案

核心问题分析

报错Error: A client is required是因为WOKcommands的初始化参数格式错误,同时自定义的bee ban命令存在多处discord.js API调用错误,两者共同导致了问题。

具体修复步骤

  1. 修正WOKcommands初始化逻辑
    WOKcommands v2及以上版本要求初始化时必须传入包含client字段的配置对象,而非直接把client作为第一个参数。修改ready事件中的代码:
client.on('ready', () => {
    console.log('Bee-bot has started')
    client.user.setActivity('The commands')
    // 正确初始化WOKcommands,配置结构符合版本要求
    new Commands({
        client: client,
        commandsDir: "commands",
        // 配置命令前缀,和自定义命令保持一致
        prefix: 'bee'
    })
})
  1. 修复封禁命令的API错误
    原bee ban命令存在多处属性调用错误,修正后代码如下:
client.on('messageCreate', message => {
    if (message.content === 'bee help') {
        message.reply('欢迎来到Bee-bot帮助面板。\n前缀是"bee"且区分大小写。\nbee help: 显示帮助面板\nbee ban: 封禁用户');
    } else if (message.content.startsWith('bee ban')) {
        // 检查发送者是否有封禁权限
        if (!message.member.permissions.has("BAN_MEMBERS")) {
            return message.reply('你没有封禁用户的权限');
        }
        // 获取被提及的目标成员
        const targetMember = message.mentions.members.first();
        if (!targetMember) {
            return message.reply('请提及要封禁的用户');
        }
        try {
            targetMember.ban();
            message.reply(`已成功封禁 ${targetMember.user.tag}`);
        } catch (err) {
            message.reply(`我没有权限封禁 ${targetMember.user.tag}`);
        }
    }
})

主要修正点:

  • 合并多个messageCreate事件监听,避免重复触发
  • 修正message.members为正确的message.mentions
  • 调整权限判断逻辑,修复提示文案错误
  • 使用正确的成员对象调用ban()方法
  1. 推荐优化(可选)
    既然使用了WOKcommands,建议直接在commands目录下创建单独的命令文件(比如ban.js),遵循框架的约定式开发,这样更便于管理和扩展命令功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:30:36