获取包含空格的命令参数
Get command argument including spaces
我有一个这样的 Discord.js 命令:
'broadcast': (msg) => {
let message2broadcast = msg.content.substr(prefix + "broadcast ".length);
if (!msg.channel.permissionsFor(msg.member).hasPermission("ADMINISTRATOR")) {
msg.channel.sendMessage(msg.author + " | No permissions! :x:");
return;
} else {
if (!message2broadcast) {
msg.channel.sendMessage(msg.author + " | No message entered. :x:");
} else {
let tosend2 = ["`Sender:`", msg.author, "`Server:`", msg.guild.name, "`Message:`", message2broadcast];
msg.channel.guild.members.forEach(user => {
user.send(tosend2.join('\n'));
});
msg.channel.sendMessage(msg.author + " | Successfully broadcasted. :white_check_mark:");
}
}
}
我希望它 运行 通过键入
#broadcast Hi, how are you?
所以它会发送"Hi, how are you?"给所有的公会成员。
然而它目前将整个命令作为消息发送...所以它向所有公会成员发送以下内容:#broadcast Hi, how are you?
我知道问题出在这一行:
let message2broadcast = msg.content.substr(prefix + "broadcast ".length);
编辑:我试着这样做:
let message2broadcast = msg.content.split(' ')[1];
但这只会从输入的消息中得到 "Hi,"。
我想获取包含空格的参数。
如有任何帮助,我们将不胜感激。
谢谢!
let message2broadcast = msg.content.split(' ').splice(1).join(' ')
它将消息拆分成一个数组,删除第一个值,然后加入剩余的值。
“Profit”的答案更好,但这是我想出的替代解决方案:
var array = msg.content.split(' ');
array.shift();
let message2broadcast = array.join(' ');
这将首先将空白空间 (arguments)
拆分为一个名为 array
的变量。
之后我们将调用 .shift()
函数删除第一个元素 (包含前缀的命令)来自数组。现在我们在最后一行用空格替换数组的逗号,得到最终的结果。
我有一个这样的 Discord.js 命令:
'broadcast': (msg) => {
let message2broadcast = msg.content.substr(prefix + "broadcast ".length);
if (!msg.channel.permissionsFor(msg.member).hasPermission("ADMINISTRATOR")) {
msg.channel.sendMessage(msg.author + " | No permissions! :x:");
return;
} else {
if (!message2broadcast) {
msg.channel.sendMessage(msg.author + " | No message entered. :x:");
} else {
let tosend2 = ["`Sender:`", msg.author, "`Server:`", msg.guild.name, "`Message:`", message2broadcast];
msg.channel.guild.members.forEach(user => {
user.send(tosend2.join('\n'));
});
msg.channel.sendMessage(msg.author + " | Successfully broadcasted. :white_check_mark:");
}
}
}
我希望它 运行 通过键入
#broadcast Hi, how are you?
所以它会发送"Hi, how are you?"给所有的公会成员。
然而它目前将整个命令作为消息发送...所以它向所有公会成员发送以下内容:#broadcast Hi, how are you?
我知道问题出在这一行:
let message2broadcast = msg.content.substr(prefix + "broadcast ".length);
编辑:我试着这样做:
let message2broadcast = msg.content.split(' ')[1];
但这只会从输入的消息中得到 "Hi,"。
我想获取包含空格的参数。
如有任何帮助,我们将不胜感激。
谢谢!
let message2broadcast = msg.content.split(' ').splice(1).join(' ')
它将消息拆分成一个数组,删除第一个值,然后加入剩余的值。
“Profit”的答案更好,但这是我想出的替代解决方案:
var array = msg.content.split(' ');
array.shift();
let message2broadcast = array.join(' ');
这将首先将空白空间 (arguments)
拆分为一个名为 array
的变量。
之后我们将调用 .shift()
函数删除第一个元素 (包含前缀的命令)来自数组。现在我们在最后一行用空格替换数组的逗号,得到最终的结果。