javascript - 获取包含空格的命令参数

标签 javascript node.js discord.js

我有一个像这样的 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 嗨,你好吗?

所以它会发送“嗨,你好吗?”致所有公会成员。

但是它目前将整个命令作为消息发送...因此它将以下内容发送给所有公会的成员:#broadcast 嗨,你好吗?

我知道问题出在这一行:

let message2broadcast = msg.content.substr(prefix + "broadcast ".length);
<小时/>

编辑:我尝试这样做:

let message2broadcast = msg.content.split(' ')[1];

但这只会从输入的消息中得到“Hi”。

<小时/>

我想获取包含空格的参数。

如有任何帮助,我们将不胜感激。

谢谢!

最佳答案

您可以使用splicejoin实现这一目标:

let message2broadcast = msg.content.split(' ').splice(1).join(' ')

它将消息分割成一个数组,删除第一个值,然后加入剩余的值。

关于javascript - 获取包含空格的命令参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51499406/

相关文章:

javascript - 无法读取未定义的不一致嵌入的属性 'includes' 来检测表情符号

node.js - MongooseJS 会在 save() 上返回一个新的结果对象吗?

javascript - embed.fields[1].value : Must be 1024 or fewer in length. embed.fields[2].value: 长度必须为 1024 或更少

javascript - Ember.js:查询参数被操纵?

javascript - 模态中的表单输入未按要求显示

javascript - $ 不是函数。 Backbone 、jQuery 和 Browserify

javascript - 如何在 minio 上的单个请求中统计多个对象

javascript - Discord.js 禁止命令问题

javascript - 与使用 javascript Date() 的 Chrome、FF 相比,Safari 中的时区不正确

javascript - 如何正确创建和渲染功能组件?