如何将Discord投票命令参数中的逗号替换为空格?
解决Discord机器人投票命令中参数显示带逗号的问题
你的问题出在对args数组的处理上:args是拆分后的命令参数数组,直接将数组插入模板字符串时,JavaScript会默认用逗号分隔数组元素,这就是为什么你看到“what,is,up”的原因。
修复方案
只需要使用数组的join(' ')方法,把数组元素用空格拼接成完整的字符串即可。同时还可以优化一下参数校验的逻辑(原代码中if (!args)无法正确判断空参数,因为空数组在JavaScript里是真值),修改后的完整代码如下:
exports.run = async (bot, message, args) => { // 优化参数校验:检查args数组长度是否为0 if (!args.length) return message.reply("You must have something to vote for!"); // 使用join(' ')将args数组拼接成空格分隔的字符串 const pollTopicText = args.join(' '); message.channel.send(`:ballot_box: ${message.author.username} started a poll! React to my next message to vote on it. :ballot_box: `); const pollTopic = await message.channel.send(pollTopicText); pollTopic.react(`✅`); pollTopic.react(`⛔`); };
关键修改点
- 把
${args}替换为args.join(' '):join(' ')会把数组里的每个元素用空格连接,生成你想要的连续文本(比如把['What', 'is', 'up']变成"What is up")。 - 将
if (!args)改为if (!args.length):因为空数组[]在JavaScript中是“真值”,直接判断!args会返回false,无法正确拦截无参数的情况,而args.length为空数组时是0,!0为true,能正确触发提示。
这样修改后,你输入投票问题“What is up”时,机器人就会正常显示完整的文本了。
内容的提问来源于stack exchange,提问作者JerryTerry Gaming
相关产品推荐
相关产品推荐

