Discord.js如何从消息内容中提取数字以实现resetHWID指令功能
问题原因
你的代码存在2个核心错误:
message.content.startsWith()返回的是布尔值(true/false),直接用字符串与布尔值做算术运算会得到非法数值NaN,不可能得到你要的用户ID参数- 没有对消息内容做分割处理,无法提取出命令后面跟着的参数内容
修复代码
Client.on ("message", (message) => { if (message.author.bot) return; const commandPrefix = Config.prefix + 'resetHWID'; if (message.content.startsWith(commandPrefix)){ // 切除命令前缀,按空格分割提取参数 const args = message.content.slice(commandPrefix.length).trim().split(/\s+/); const userId = args[0]; // 可选:参数非空校验,避免用户未传参的异常 if (!userId) { return message.channel.send('请输入要重置的用户ID'); } const Embed = new Discord.MessageEmbed() .setColor('#6f0bd4') .setTitle('Success!') .setDescription(`Successfully reset HWID for user ${userId}`) message.channel.send(Embed); } });
修复说明
- 先提取完整命令前缀,用
slice方法切掉消息内容里的命令前缀部分,再用trim去除前后多余空格 - 按空格分割剩余内容拿到参数数组,取第一个元素就是目标用户ID
- 新增参数校验逻辑,避免用户未传参数时返回异常内容
内容的提问来源于stack exchange,提问作者wsYikes
相关产品推荐
相关产品推荐

