Javascript 如果我没有';我不知道这些值会持续多久?
我试图创建变量来接受我试图发出的discord mute命令的参数。我试着制造三个变量:沉默、时间和理性。 命令的格式是这样的!沉默[沉默,时间,理由]Javascript 如果我没有';我不知道这些值会持续多久?,javascript,node.js,discord.js,Javascript,Node.js,Discord.js,我试图创建变量来接受我试图发出的discord mute命令的参数。我试着制造三个变量:沉默、时间和理性。 命令的格式是这样的!沉默[沉默,时间,理由] constmute=JSON.parse(message.content.slice(7)); //获取要禁用的成员 const time=JSON.parse(message.content.slice(8+mute.length()); //获取要为用户设置静音的时间 const reason=JSON.parse(message.cont
constmute=JSON.parse(message.content.slice(7));
//获取要禁用的成员
const time=JSON.parse(message.content.slice(8+mute.length());
//获取要为用户设置静音的时间
const reason=JSON.parse(message.content.slice(9+mute.length()+time.length());
//获取静音的原因
当变量mute接受要被静音的成员的参数时,它也会接受时间范围,并且reason和time会随着时间而接受reason。如果我不知道每一个值的长度,我如何限制MuTee只接受时间和时间? 如果你计划有类似的命令,你可能需要考虑实现。不过我会给你举个简单的例子
这样看: 您的邮件内容如下所示:
!mute @User 10m Spam
我们怎么知道是什么?间距
[!mute ... @User ... 10m ... Spam]
我们可以将消息拆分为一个空格,给我们一个子字符串数组,每个子字符串都是单独的单词
const words = message.content.split(' ');
// words => ['!mute', '@User', '10m', 'Spam'];
但是,如果原因大于1个单词,则会将其分成多个部分。我马上就讲
首先,让我们将静音和时间分开
const words = message.content.split(' ');
const mutee = words[1]; // '@User'
const time = words[2]; // '10m'
我们可以使用.join()
将数组的其余部分分配给一个变量。这将自动将所有子字符串合并为一个字符串作为原因
// Slice will remove the first 2 elements which we known to be the mutee and time
const reason = words.slice(3).join(' ');
// reason => 'Spam' ... And anything in front!
您的最终代码将如下所示
const words = message.content.split(' ');
const mutee = words[1];
const time = words[2];
const reason = words.slice(3).join(' ');
在ES6中,您可以通过一些语法糖分来实现这一点
const words = message.content.split(' ');
let [, mutee, time, ...reason] = words;
reason = reason.join(' ');
<>你可能想考虑如果你计划有类似的命令行。不过我会给你举个简单的例子
这样看: 您的邮件内容如下所示:
!mute @User 10m Spam
我们怎么知道是什么?间距
[!mute ... @User ... 10m ... Spam]
我们可以将消息拆分为一个空格,给我们一个子字符串数组,每个子字符串都是单独的单词
const words = message.content.split(' ');
// words => ['!mute', '@User', '10m', 'Spam'];
但是,如果原因大于1个单词,则会将其分成多个部分。我马上就讲
首先,让我们将静音和时间分开
const words = message.content.split(' ');
const mutee = words[1]; // '@User'
const time = words[2]; // '10m'
我们可以使用.join()
将数组的其余部分分配给一个变量。这将自动将所有子字符串合并为一个字符串作为原因
// Slice will remove the first 2 elements which we known to be the mutee and time
const reason = words.slice(3).join(' ');
// reason => 'Spam' ... And anything in front!
您的最终代码将如下所示
const words = message.content.split(' ');
const mutee = words[1];
const time = words[2];
const reason = words.slice(3).join(' ');
在ES6中,您可以通过一些语法糖分来实现这一点
const words = message.content.split(' ');
let [, mutee, time, ...reason] = words;
reason = reason.join(' ');