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

Discord.js无法捕获!register命令后的输入内容问题

问题:无法捕获!register命令后的用户输入内容

我想捕获用户在!register命令后输入的内容,存入newName变量并在控制台打印测试,但目前既存不了内容,控制台也没任何输出(连undefined都不打印)。我以为是split方法没生效,但就算不用split,直接存message.content也拿不到用户输入的内容。

我试过不使用split直接存储用户输入,还是不行;也试过只验证命令是否执行,程序也不会走后续代码,控制台没报错,就是拿不到!register命令后的内容。

当前代码:

if (message.content === '!registrar') {
    // pegue o nome do usuário digitado após o comando "!registrar"
    var newName = message.content.split(' ')[1];
    console.log(newName);
}

问题根源

核心问题是命令拼写不匹配:代码里判断的是!registrar(葡萄牙语“注册”),但你实际要用的命令是!register(英语“注册”)。用户输入!register时,message.content === '!registrar'的条件不成立,整个代码块根本不会执行,自然没有任何控制台输出。

解决方案

  1. 修正命令拼写匹配
    把判断条件里的'!registrar'改成'!register',确保和实际使用的命令一致:
if (message.content === '!register') {
    var newName = message.content.split(' ')[1];
    console.log(newName);
}
  1. 用更健壮的命令判断方式
    如果用户可能输入带空格的命令前缀(比如多打了空格),或者想兼容命令后直接跟内容的情况,建议用startsWith替代严格相等判断,避免格式问题导致匹配失败:
if (message.content.startsWith('!register')) {
    // 分割命令和参数,过滤空字符串(处理多个连续空格的情况)
    const parts = message.content.split(' ').filter(part => part);
    // 确保有参数才取,无参数时给默认值
    const newName = parts[1] || '未输入名称';
    console.log(newName);
}
  1. 排查消息事件绑定
    如果改了拼写还是不行,要确认代码是否正确监听了消息事件(比如Discord.js里的client.on('messageCreate', message => { ... })),确保消息事件能正常触发。

内容的提问来源于stack exchange,提问作者Renã Augusto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:45:38