Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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 NodeJS,DiscordJS。按{}拆分参数_Javascript_Node.js_Discord.js - Fatal编程技术网

Javascript NodeJS,DiscordJS。按{}拆分参数

Javascript NodeJS,DiscordJS。按{}拆分参数,javascript,node.js,discord.js,Javascript,Node.js,Discord.js,我怎么才能让它工作,我不知道我在这里做错了什么 let args = message.content.substring(PREFIX.length).split(" "); const a = args; const items = a.slice(a.indexOf('{') + 1, a.lastIndexOf('}')).split('}{') switch(args[0]) { case 'status': message.channel.send("**C

我怎么才能让它工作,我不知道我在这里做错了什么

let args = message.content.substring(PREFIX.length).split(" ");
const a = args; 
const items = a.slice(a.indexOf('{') + 1, a.lastIndexOf('}')).split('}{')

switch(args[0]) {
    case 'status':
        message.channel.send("**Current Status:**");
        con.query("SELECT * FROM games", function(err, result, fields) {
           if(err) throw err;
            Object.keys(result).forEach(function(key) {
                var row = result[key];
                message.channel.send('**' + row.name + '**' + ' - ' + '(' + row.description + ')' + ' - ' + '**' + row.status + '**');
            });
        });
        break;
    case 'add':
        let name = items[1];
        let desc = items[2];
        let status = items[3];
        console.log(items);
        break;
我在试着分开这条路!通过{}添加命令参数,这样系统就知道{}中的其他字符串是下一个命令

!add {this is a argument}{another argument}{another argument sitting here}

我认为问题在于,您正在拆分消息以解析出初始命令(add),但在执行下一次拆分之前,没有将其重新连接在一起。我想你想把第二行改成:

const a=args.slice(1.join)(“”)

这将使items数组
['这是一个参数','另一个参数','另一个参数']


访问items数组时,请确保使用了正确的索引。在本例中,只有3个项目,因此有效索引应该是(0、1、2)。(在您的代码中,您正在访问3)

使用light regexp的方法可以是:

let line=“!add{这是一个参数}{另一个参数}{另一个参数在这里}”
让[command,argumentlist]=line.match(/!([^\s]+)\s+\{(.*)\}/).splice(1);
让参数=argumentlist.split(“}{”);
console.log(命令);

console.log(参数);
regexr.com/4eiig