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