From 981de22f320b067794797704e9c385e8c54945e4 Mon Sep 17 00:00:00 2001 From: joonaen Date: Mon, 22 Feb 2016 12:27:33 +0200 Subject: [PATCH 01/13] Adding gitignore file --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..2db5c5c32 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +{code}/node_modules{code} \ No newline at end of file From 929f8acf8dc6af09738f09775f8e8cbf1cc55453 Mon Sep 17 00:00:00 2001 From: Robert Stankevich Date: Mon, 22 Feb 2016 13:15:51 +0200 Subject: [PATCH 02/13] Answer the question who made it --- bot.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/bot.js b/bot.js index 227944a9f..a3eaffcb5 100755 --- a/bot.js +++ b/bot.js @@ -132,6 +132,16 @@ controller.hears(['what is my name','who am i'],'direct_message,direct_mention,m }); }); +controller.hears(['Who made you','who is your daddy'],'direct_message,direct_mention,mention',function(bot, message) { + + controller.storage.users.get(message.user,function(err, user) { + if (user && user.name) { + bot.reply(message, user.name+' made me.'); + } else { + bot.reply(message,'I have never heard his name'); + } + }); +}); controller.hears(['shutdown'],'direct_message,direct_mention,mention',function(bot, message) { From 12dbea86299f6182d0811d280a858a558dfc442e Mon Sep 17 00:00:00 2001 From: Robert Stankevich Date: Mon, 22 Feb 2016 13:27:41 +0200 Subject: [PATCH 03/13] Answer the question who made it --- bot.js | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/bot.js b/bot.js index a3eaffcb5..2252502e1 100755 --- a/bot.js +++ b/bot.js @@ -133,14 +133,7 @@ controller.hears(['what is my name','who am i'],'direct_message,direct_mention,m }); controller.hears(['Who made you','who is your daddy'],'direct_message,direct_mention,mention',function(bot, message) { - - controller.storage.users.get(message.user,function(err, user) { - if (user && user.name) { - bot.reply(message, user.name+' made me.'); - } else { - bot.reply(message,'I have never heard his name'); - } - }); + bot.reply(message, 'Robert made me.'); }); controller.hears(['shutdown'],'direct_message,direct_mention,mention',function(bot, message) { From 37798ce8348a2d3399249a0e8e8c17bb2913b3de Mon Sep 17 00:00:00 2001 From: Robert Stankevich Date: Mon, 22 Feb 2016 14:03:30 +0200 Subject: [PATCH 04/13] Adding prime feature --- bot.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/bot.js b/bot.js index 2252502e1..75275d742 100755 --- a/bot.js +++ b/bot.js @@ -136,6 +136,33 @@ controller.hears(['Who made you','who is your daddy'],'direct_message,direct_men bot.reply(message, 'Robert made me.'); }); +controller.hears(['prime'],'direct_message,direct_mention,mention',function(bot, message) { + bot.reply(message "First ten prime numbers are: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29"); +}); + +controller.hears(['prime (.*)'],'direct_message,direct_mention,mention',function(bot, message) { + + var input = message.text.match(/prime (.*)/i); + var x = parseInt(input); + var check = new Boolean("true"); + + for(int i = 2; i<=x; i++) { + if(x%i!=0){ + check= false; + break; + } + } + + if(check) { + bot.reply(message "The number you gave is prime"); + } + else { + bot.reply(message "The number you gave is not prime"); + } +}); + + + controller.hears(['shutdown'],'direct_message,direct_mention,mention',function(bot, message) { bot.startConversation(message,function(err, convo) { From 738635f5de59677ca650e7669d03f113419cd601 Mon Sep 17 00:00:00 2001 From: jEnbuska Date: Mon, 22 Feb 2016 14:50:53 +0200 Subject: [PATCH 05/13] fibonacci function added. Tested and working --- bot.js | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/bot.js b/bot.js index 227944a9f..08e1cc05e 100755 --- a/bot.js +++ b/bot.js @@ -169,6 +169,60 @@ controller.hears(['uptime','identify yourself','who are you','what is your name' }); +controller.hears(['fibonacci'],'direct_message,direct_mention,mention',function(bot, message) { + console.log(JSON.stringify(message)); + var param = message.text.replace('fibonacci','').trim(); + console.log(param); + + if(param.length==0){ + var a = 0, b = 1; + var fiboStr = ""; + for (var i = 1; i <= 10; i++) { + a = a + b; + b = a - b; + fiboStr+=""+a; + if(i!==param){ + fiboStr+=", " + } + } + bot.reply(message, fiboStr); + }else if(!isNaN(param) && Number(param) % 1 === 0) { + var couldBeFibo = true; + var isSurelyFibo = false; + + var a = 0, b = 1; + var fibos = []; + var i = 1; + for (; couldBeFibo && !isSurelyFibo; i++) { + a = a + b; + b = a - b; + if (a === Number(param)) { + isSurelyFibo = true; + } else if (a > param) { + couldBeFibo = false; + } else { + fibos.push(a); + } + } + if (isSurelyFibo) { + i = i <= 10 ? 0 : fibos.length - 10; + var fiboStr = ""; + for (; i < fibos.length; i++) { + fiboStr+=fibos[i]; + if ((fibos.length - 1) !== i) { + fiboStr += ", "; + } + } + bot.reply(message, fiboStr); + }else{ + bot.reply(message, "not fibonacci number"); + } + }else{ + bot.reply(message, "Give me a number parameter"); + } +}); + + function formatUptime(uptime) { var unit = 'second'; if (uptime > 60) { From 9d97db1b6e10605e035c5291d36ee732b74d4b9a Mon Sep 17 00:00:00 2001 From: jEnbuska Date: Mon, 22 Feb 2016 14:57:33 +0200 Subject: [PATCH 06/13] merged with fibonacci. gitignore changed --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2db5c5c32..479880f4f 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -{code}/node_modules{code} \ No newline at end of file +/node_modules +/.idea \ No newline at end of file From 807c24a88ff98e63dd41a90d4974c8fedf3676cc Mon Sep 17 00:00:00 2001 From: Robert Stankevich Date: Mon, 22 Feb 2016 15:15:49 +0200 Subject: [PATCH 07/13] Prime fixed and working, but not complete --- bot.js | 49 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/bot.js b/bot.js index 75275d742..285aee75f 100755 --- a/bot.js +++ b/bot.js @@ -137,28 +137,47 @@ controller.hears(['Who made you','who is your daddy'],'direct_message,direct_men }); controller.hears(['prime'],'direct_message,direct_mention,mention',function(bot, message) { - bot.reply(message "First ten prime numbers are: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29"); + bot.reply(message, 'First ten prime numbers are: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29'); }); controller.hears(['prime (.*)'],'direct_message,direct_mention,mention',function(bot, message) { - - var input = message.text.match(/prime (.*)/i); + + var input = message.match[1]; var x = parseInt(input); - var check = new Boolean("true"); + console.log("X is"+x); + var check = true; - for(int i = 2; i<=x; i++) { - if(x%i!=0){ - check= false; - break; - } - } - if(check) { - bot.reply(message "The number you gave is prime"); - } - else { - bot.reply(message "The number you gave is not prime"); + //if(x>3 && (x%2 ==0 || x%3==0)) { + +// var start = 2; +// while(start <=Math.sqrt(x)) { +// if(x%start++<1) { +// //bot.reply(message, 'The number you gave is not prime'); +// check = false; +// break; +// }else{ +// check = true; +// } +// } + + + var d = x-1; + + while(d>1) { + console.log("X is"+x+" D is"+d); + if((x%d)==0) { + check=false; + break; } + d--; + } + + if(check) { + bot.reply(message, 'The number you gave is prime!'); + }else{ + bot.reply(message, 'The number you gave is not prime!'); + } }); From 0505395d383a6692de1b05e9684a462d4df36bc5 Mon Sep 17 00:00:00 2001 From: jEnbuska Date: Mon, 22 Feb 2016 15:39:50 +0200 Subject: [PATCH 08/13] only some code cleanup --- bot.js | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/bot.js b/bot.js index 08e1cc05e..53cad7f09 100755 --- a/bot.js +++ b/bot.js @@ -169,27 +169,20 @@ controller.hears(['uptime','identify yourself','who are you','what is your name' }); -controller.hears(['fibonacci'],'direct_message,direct_mention,mention',function(bot, message) { - console.log(JSON.stringify(message)); - var param = message.text.replace('fibonacci','').trim(); - console.log(param); - +controller.hears(['fibonacci(.*)'],'direct_message,direct_mention,mention',function(bot, message) { + var param = message.match[1].trim(); if(param.length==0){ var a = 0, b = 1; - var fiboStr = ""; + var fibos = []; for (var i = 1; i <= 10; i++) { a = a + b; b = a - b; - fiboStr+=""+a; - if(i!==param){ - fiboStr+=", " - } + fibos.push(a); } - bot.reply(message, fiboStr); + bot.reply(message, fibos.toString()); }else if(!isNaN(param) && Number(param) % 1 === 0) { var couldBeFibo = true; var isSurelyFibo = false; - var a = 0, b = 1; var fibos = []; var i = 1; @@ -205,15 +198,9 @@ controller.hears(['fibonacci'],'direct_message,direct_mention,mention',function( } } if (isSurelyFibo) { - i = i <= 10 ? 0 : fibos.length - 10; - var fiboStr = ""; - for (; i < fibos.length; i++) { - fiboStr+=fibos[i]; - if ((fibos.length - 1) !== i) { - fiboStr += ", "; - } - } - bot.reply(message, fiboStr); + start = i <= 10 ? 0 : fibos.length - 10; + var tenLastFibos = fibos.slice(start, fibos.length); + bot.reply(message, tenLastFibos.toString()); }else{ bot.reply(message, "not fibonacci number"); } @@ -222,7 +209,6 @@ controller.hears(['fibonacci'],'direct_message,direct_mention,mention',function( } }); - function formatUptime(uptime) { var unit = 'second'; if (uptime > 60) { From 581fbab382edf416b5cb338c16025fc695c479fc Mon Sep 17 00:00:00 2001 From: Robert Stankevich Date: Mon, 22 Feb 2016 15:41:04 +0200 Subject: [PATCH 09/13] Prime is done --- bot.js | 56 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/bot.js b/bot.js index 285aee75f..789b4d274 100755 --- a/bot.js +++ b/bot.js @@ -145,39 +145,41 @@ controller.hears(['prime (.*)'],'direct_message,direct_mention,mention',function var input = message.match[1]; var x = parseInt(input); console.log("X is"+x); - var check = true; - - - //if(x>3 && (x%2 ==0 || x%3==0)) { - -// var start = 2; -// while(start <=Math.sqrt(x)) { -// if(x%start++<1) { -// //bot.reply(message, 'The number you gave is not prime'); -// check = false; -// break; -// }else{ -// check = true; -// } -// } - - - var d = x-1; - - while(d>1) { - console.log("X is"+x+" D is"+d); - if((x%d)==0) { - check=false; - break; + + function isPrime(x) { + var d = x-1; + while(d>1) { + console.log("X is"+x+" D is"+d); + if((x%d)==0) { + return false; + } + d--; } - d--; + return true; } - if(check) { + if(x>1 && x%1!=0 && x!=null) { + if(isPrime(x)) { bot.reply(message, 'The number you gave is prime!'); - }else{ + bot.reply(message, 'Next ten prime numberare: '); + var count = 0; + while(count <10){ + x++; + if(isPrime(x)) { + bot.reply(message, x+', '); + count++; + } + } + } + + else{ + bot.reply(message, 'The number you gave is not prime!'); } + } + else { + bot.reply(message, 'Input a proper number, damn it!'); + } }); From 80386db2fcb802610adb500d315c02a96f6005ab Mon Sep 17 00:00:00 2001 From: Robert Date: Tue, 23 Feb 2016 10:49:23 +0200 Subject: [PATCH 10/13] Merging with use of upstream master --- bot.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/bot.js b/bot.js index a416413aa..ae45b6dad 100755 --- a/bot.js +++ b/bot.js @@ -144,12 +144,12 @@ controller.hears(['prime (.*)'],'direct_message,direct_mention,mention',function var input = message.match[1]; var x = parseInt(input); - console.log("X is"+x); + console.log("X is "+x); function isPrime(x) { var d = x-1; while(d>1) { - console.log("X is"+x+" D is"+d); + console.log("X is "+x+" D is"+d); if((x%d)==0) { return false; } @@ -158,8 +158,8 @@ controller.hears(['prime (.*)'],'direct_message,direct_mention,mention',function return true; } - if(x>1 && x%1!=0 && x!=null) { - if(isPrime(x)) { + if(x>1 && x%1==0 && x!=null) { + if(isPrime(x)) { bot.reply(message, 'The number you gave is prime!'); bot.reply(message, 'Next ten prime numberare: '); var count = 0; @@ -170,13 +170,13 @@ controller.hears(['prime (.*)'],'direct_message,direct_mention,mention',function count++; } } - } + } - else{ - + else{ bot.reply(message, 'The number you gave is not prime!'); + } } - } + else { bot.reply(message, 'Input a proper number, damn it!'); } From bf799c494941c69299f25f9f089cc91aef08480e Mon Sep 17 00:00:00 2001 From: jEnbuska Date: Tue, 23 Feb 2016 11:32:26 +0200 Subject: [PATCH 11/13] fibonacci repaired --- bot.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/bot.js b/bot.js index 00eb7b9bd..fda753340 100755 --- a/bot.js +++ b/bot.js @@ -171,7 +171,7 @@ controller.hears(['uptime','identify yourself','who are you','what is your name' controller.hears(['fibonacci'], 'direct_message,direct_mention,mention', function(bot, message) { if (message.text === 'fibonacci') { - bot.reply(message, '1, 1, 2, 3, 5, 8, 13, 21, 34, 55'); + bot.reply(message, '1, 1, 2, 3, 5'); } }); @@ -184,17 +184,28 @@ controller.hears(['fibonacci ([0-9]+)'], 'direct_message,direct_mention,mention' bot.reply(message, 'That is not a Fibonacci number!'); } else { - bot.reply(message, fibonacci.slice(fibonacci.length-10,fibonacci.length).join(', ')); + var a = fibonacci[fibonacci.length-1]; + var b; + if(fibonacci.length>1){ + b=fibonacci[fibonacci.length-2]; + }else{ + b=0; + } + var nextFive = []; + for(var i = 0; i<5; i++){ + nextFive.push(a+b); + b = a; + a = nextFive[i]; + } + bot.reply(message, nextFive.slice(0,nextFive.length).join(', ')); } }); function calculateFibonacciUpto(goal) { var fibonacci = [1, 1]; - while (fibonacci[fibonacci.length-1] < goal) { fibonacci.push(fibonacci[fibonacci.length-2] + fibonacci[fibonacci.length-1]); } - return fibonacci; } From b8b3135ef4f7d75cd03151a94c21f836bd267301 Mon Sep 17 00:00:00 2001 From: Robert Date: Tue, 23 Feb 2016 11:32:40 +0200 Subject: [PATCH 12/13] Fixed Prime to print results in descending order --- bot.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bot.js b/bot.js index 00eb7b9bd..4f649a47f 100755 --- a/bot.js +++ b/bot.js @@ -235,8 +235,12 @@ controller.hears('prime (.*)',['direct_message', 'direct_mention', 'mention'],fu if (MathHelper.isPrime(number)) { primes.push(number); } + + if(number ==0) { + break; + } - number++; + number--; } var reply = ""; From 19e5e1fba86a10b777f03f53bcaaf9799c974b94 Mon Sep 17 00:00:00 2001 From: jEnbuska Date: Tue, 23 Feb 2016 13:16:18 +0200 Subject: [PATCH 13/13] weather feature implemented and tested --- .gitmodules | 3 +++ bot.js | 17 +++++++++++++++++ package.json | 4 +++- weather | 1 + 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 .gitmodules create mode 160000 weather diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..613b22fd7 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "weather"] + path = weather + url = https://github.com/cmfatih/weather.git diff --git a/bot.js b/bot.js index b9e5a7ded..774a1ce66 100755 --- a/bot.js +++ b/bot.js @@ -83,6 +83,23 @@ var bot = controller.spawn({ token: process.env.token }).startRTM(); +const weather = require('./weather/lib/weather.js'); + +controller.hears(['How is the weather in (.*), (.*)'],'direct_message,direct_mention,mention',function(bot, message) { + + var input1 = message.match[1]; + var input2 = message.match[2]; + console.log(input1); + console.log(input2); + weather.find({search: input1 + " " + input2, degreeType: 'C'}, function (err, result) { + console.log(JSON.stringify(result, null, 2)); + if(result !== undefined){ + bot.reply(message, JSON.stringify(result[0].current.temperature, null, 2)); + }else{ + bot.reply(message, "You dont make any sence"); + } + }); +}); controller.hears(['hello','hi'],'direct_message,direct_mention,mention',function(bot, message) { diff --git a/package.json b/package.json index 69a5959a8..b8ab9aeae 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "jfs": "^0.2.6", "mustache": "^2.2.1", "request": "^2.67.0", - "ws": "^1.0.0" + "ws": "^1.0.0", + "xml2js": "*" }, "devDependencies": { "jscs": "^2.7.0", @@ -20,6 +21,7 @@ "tap-spec": "^4.1.1", "tape": "^4.4.0", "winston": "^2.1.1" + }, "repository": { "type": "git", diff --git a/weather b/weather new file mode 160000 index 000000000..cc33373de --- /dev/null +++ b/weather @@ -0,0 +1 @@ +Subproject commit cc33373de4fc850b050efe844c6e5d6089aa44c0