尝试在节点中创建命令行界面

问题描述

我正在尝试创建命令行,以便可以执行!! help之类的命令,但是如果需要更多代码来正确评估我的情况,它似乎不会运行其他if语句,那么我很乐意提供更多

// CLI interface
    rl.on('line',(line) => {
        // CLI cmds
        if (line == line.includes(prefixs.cliprefix)) {
            if (line == line.includes('help')) { 
                console.log(clihelp()); console.log("new method"); clihelp(); 
            } else { 
            //test for event
                if (line == line.includes('event') && line == line.includes('list'))  {
                    console.log("example method");
                    gists.get('5f718f4198f1ea91a37e3a9da468675c')
                    .then(ress => console.log(ress))
                    .catch(console.error);
                    console.log("new method");
                    console.log(gists.get('5f718f4198f1ea91a37e3a9da468675c'));
                    console.log("end");
                }
            }
        } else {
            // send cmd to mc 
            socket.send(JSON.stringify({
                "body": {
                    "origin": {
                        "type": "player"
                    },"commandLine": line,"version": 1
                },"header": {
                    "requestId": "00000000-0000-0000-000000000000","messagePurpose": "commandRequest","version": 1,"messageType": "commandRequest"
                }
            }));
            console.log("command sent: " +  line);
        }
    });
//CLI closed

解决方法

问题出在您的if语句上。当if变量包含一些我看到的文本时,您希望运行line块中的代码。但是您创建的条件不正确。

他们应该像这样:

if (line.includes('help')) 

代替

if (line == line.includes('help'))
,

我能够通过使用这里找到的tmi.js命令处理程序示例来使其工作 https://tmijs.com/以及此处https://www.google.com/amp/s/www.geeksforgeeks.org/else-statement-javascript/amp/

     rl.on('line',(line) => {
      if (line === line.includes(prefixs.cliprefix)) return;
                  const args = line.slice(prefixs.cliprefix.length).split(' ');
                  const command = args.shift().toLowerCase();
                  console.log("command = '" + command + "' args = '" + args + "'");
                 if(command === 'help') { clihelp(); }
             if(command === 'ping') { console.log("Pinging twitch"); client.ping(); }
             if(command === 'log') { console.log(logsettings); }
             if(command === 'log' && args === args.include("on")) { 
           if(args === args.include("error")) {console.log("now logging Error's"); logsettings.type = 'error'; }
                   if(args === args.include("info"))  {console.log("now logging Info"); logsettings.type = 'info'; }
                   if(args === args.include("debug"))  {console.log("now logging debug"); logsettings.type = 'debug'; }
                   if(args === args.include("all")) {console.log("now logging everything"); logsettings.type = 'all'; }
                   return; }
                 if(command === 'log' && args.include("off")) { console.log("Logging is now OFF"); logsettings.log = 'off'; }
                 if(command === 'prefix') {
                       const nclip = args.slice(4);
                       const nmcp = args.slice(3);
                       if(args === args.include('cli')) { console.log("Prefix for " + args.slice(0,4) + " is now " + nclip); prefixs.cliprefix=nclip; }
                     if(args === args.include('mc')) { console.log("Prefix for " + args.slice(0,3) + " is now " + nmcp); prefixs.mcprefix = nmcp; }
                     if(args === ' ') { console.log(prefixs); }
                    return;  
                     }
                    }); // CLI closed ```