From 11063d120defba1b320ddf0b5dfa3e890207a89a Mon Sep 17 00:00:00 2001 From: Mohammed Ashab Uddin Date: Fri, 24 Jul 2020 15:59:23 +0400 Subject: [PATCH] fixed gettng input from the message --- whatsapp-web.js/src/models/commands.js | 25 ++++++------------- .../src/userInteraction/messages.js | 11 +++++--- whatsapp-web.js/test/test_command.js | 21 +++------------- 3 files changed, 20 insertions(+), 37 deletions(-) diff --git a/whatsapp-web.js/src/models/commands.js b/whatsapp-web.js/src/models/commands.js index be55ada..ab084c2 100644 --- a/whatsapp-web.js/src/models/commands.js +++ b/whatsapp-web.js/src/models/commands.js @@ -10,7 +10,6 @@ class Command{ this.requireInput = false; this.inputPos = []; this._requireInput(); - this._getInputPosition(); } /** @@ -76,19 +75,6 @@ class Command{ this.requireInput = matched != null && matched.length > 1; } - _getInputPosition(){ - let splitCommand = this.command.split(' '); - let inputPos = []; - for (let i = 0; i < splitCommand.length; i++) - { - if(splitCommand[i].startsWith('<')){ - inputPos.push(i); - } - } - - this.inputPos = inputPos; - } - /** * returns an array of string representing the inputs of the command * @param {string} message @@ -96,9 +82,14 @@ class Command{ getInput(message){ let splitMsg = message.split(' '); - let input = []; - for(let pos of this.inputPos){ - input.push(splitMsg[pos]); + let splitCommand = this.command.split(' '); + let input = {}; + + for(let i = 0; i < splitMsg.length; i++){ + if(splitCommand[i].startsWith('<')){ + let key = splitCommand[i].slice(1, splitCommand[i].length-1); + input[key] = splitMsg[i]; + } } return input; diff --git a/whatsapp-web.js/src/userInteraction/messages.js b/whatsapp-web.js/src/userInteraction/messages.js index 5884fee..e62c716 100644 --- a/whatsapp-web.js/src/userInteraction/messages.js +++ b/whatsapp-web.js/src/userInteraction/messages.js @@ -11,7 +11,7 @@ const commands = [ command: 'wg', //function to be executed - callback : () => { + callback : (input) => { logic.onWG(); //mesage to be sent to the user @@ -36,7 +36,7 @@ module.exports= onMessage = (message, client) => { if(message.body.startsWith("wg")) { for (let c of commands){ - if(c.command == message.body) + if(c.equals(message.body)) { command = c; break; @@ -44,7 +44,12 @@ module.exports= onMessage = (message, client) => { } if(command != null){ - let messageToBeSent = command.callback(); + let input = {}; + if(command.requireInput){ + input = command.getInput(); + } + + let messageToBeSent = command.callback(input); for (let msg of messageToBeSent) { client.sendMessage(message.from, msg, new Object()); diff --git a/whatsapp-web.js/test/test_command.js b/whatsapp-web.js/test/test_command.js index 01e4772..1fca64a 100644 --- a/whatsapp-web.js/test/test_command.js +++ b/whatsapp-web.js/test/test_command.js @@ -119,19 +119,6 @@ describe('Command', () => { expect(a.equals(message)).to.false; }); - - it('Test : _getInputPosition()', () => { - - let a = new Command({ - command: "wg create ", - callback: () => { - - } - }); - - expect(a.inputPos[0]).to.equal(2); - - }) it('Test : getInput() with 1 input', () => { @@ -144,7 +131,7 @@ describe('Command', () => { } }); - expect(a.getInput(message)[0]).to.equal('p12'); + expect(a.getInput(message)['id']).to.equal('p12'); }); it('Test : getInput() with 2 input', () => { @@ -158,10 +145,10 @@ describe('Command', () => { } }); - expect(a.getInput(message)[0]).to.equal('p12'); - expect(a.getInput(message)[1]).to.equal('pikachu'); + expect(a.getInput(message)['id']).to.equal('p12'); + expect(a.getInput(message)['name']).to.equal('pikachu'); }); - + }); \ No newline at end of file