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

DiscordJS v12 如何通过args.slice拆分获取onboard命令的呼号与评论参数

Discord onboard命令参数拆分修复方案

问题原因

你现在两个参数重复的问题,是因为你给callSign和comments赋值时都用了args.slice(1).join(" "),把除了第一个用户参数之外的所有内容都赋值给了两个变量,自然没有拆分效果。

修复方法

因为呼号要求是固定3位数字,是命令的第二个参数,所以直接取args[1]作为呼号,评论内容从第三个参数args[2]开始拼接即可,同时可以新增3位数字的校验逻辑,避免用户输入格式错误。

需要修改的代码段

将原代码中以下部分:

let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]);
let callSign = args.slice(1).join(" ");
let comments = args.slice(1).join(" ");
if (!args[0]) return message.channel.send("Please put a valid member or a user ID for me to onboard").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
if (!user) return message.channel.send("Sorry, I was unable to find this user.")
//if (!user) return message.channel.send("Please put a valid member or a user ID for me to onboard").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
//if (!callSign) return message.channel.send("Please enter in the call-sign.").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);

替换为:

if (!args[0]) return message.channel.send("请输入需要登记的用户或用户ID").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]);
if (!user) return message.channel.send("未找到对应用户。").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);

// 提取呼号并校验3位数字格式
let callSign = args[1];
const callSignCheck = /^\d{3}$/;
if (!callSign || !callSignCheck.test(callSign)) {
    return message.channel.send("请输入正确的3位数字呼号").then(msg => msg.delete({ timeout: 8000 })).catch(console.error);
}

// 提取呼号后的所有内容作为评论
let comments = args.slice(2).join(" ");

其他优化说明

你原来日志嵌入里没有展示呼号字段,可以在logEmbed的描述里补充呼号展示,修改如下:

.setDescription(`**登记者:** <@${message.author.id}> \n\n**学员:** <@${user.id}>\n\n**学员ID:** ${user.id}\n\n**呼号:** ${callSign}\n\n**备注:** ${comments || "无备注"}`,)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:21:03