Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果我没有';我不知道这些值会持续多久?_Javascript_Node.js_Discord.js - Fatal编程技术网

Javascript 如果我没有';我不知道这些值会持续多久?

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

我试图创建变量来接受我试图发出的discord mute命令的参数。我试着制造三个变量:沉默、时间和理性。 命令的格式是这样的!沉默[沉默,时间,理由]

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(' ');