From 7b49fda50060b5efc34bd7582e4e59d810521c95 Mon Sep 17 00:00:00 2001 From: ChanhLeNguyen Date: Mon, 22 Feb 2016 13:10:25 +0200 Subject: [PATCH 01/11] Add who made you --- bot.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/bot.js b/bot.js index 227944a9f..c78091841 100755 --- a/bot.js +++ b/bot.js @@ -26,7 +26,7 @@ This bot demonstrates many of the core features of Botkit: Run your bot from the command line: set token= - + node bot.js # USE THE BOT: @@ -132,6 +132,17 @@ controller.hears(['what is my name','who am i'],'direct_message,direct_mention,m }); }); +controller.hears(['who make you','who made you'],'direct_message,direct_mention,mention',function(bot, message) { + + controller.storage.users.get(message.user,function(err, user) { + if (user && user.name) { + bot.reply(message,'Metro group made me'); + } else { + bot.reply(message,'who know'); + } + }); +}); + controller.hears(['shutdown'],'direct_message,direct_mention,mention',function(bot, message) { From 78edf1709cf65d3d02e71ecd7955568d17ed4cad Mon Sep 17 00:00:00 2001 From: ChanhLeNguyen Date: Mon, 22 Feb 2016 14:41:28 +0200 Subject: [PATCH 02/11] Fix who made me --- bot.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/bot.js b/bot.js index c78091841..8c197cd5b 100755 --- a/bot.js +++ b/bot.js @@ -135,11 +135,7 @@ controller.hears(['what is my name','who am i'],'direct_message,direct_mention,m controller.hears(['who make you','who made you'],'direct_message,direct_mention,mention',function(bot, message) { controller.storage.users.get(message.user,function(err, user) { - if (user && user.name) { - bot.reply(message,'Metro group made me'); - } else { - bot.reply(message,'who know'); - } + bot.reply(message,'Metro group made me'); }); }); From 9330e13b9297bc8b357a26a6de2557a22d13fe44 Mon Sep 17 00:00:00 2001 From: ChanhLeNguyen Date: Mon, 22 Feb 2016 14:46:08 +0200 Subject: [PATCH 03/11] Add who made you 3 --- bot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bot.js b/bot.js index 8c197cd5b..5e54000cd 100755 --- a/bot.js +++ b/bot.js @@ -135,7 +135,7 @@ controller.hears(['what is my name','who am i'],'direct_message,direct_mention,m controller.hears(['who make you','who made you'],'direct_message,direct_mention,mention',function(bot, message) { controller.storage.users.get(message.user,function(err, user) { - bot.reply(message,'Metro group made me'); + bot.reply(message,'Metro group made me. Hihi'); }); }); From 207dd3bc2e976ab0bdc2fa52ff4123ad701515d8 Mon Sep 17 00:00:00 2001 From: ChanhLeNguyen Date: Mon, 22 Feb 2016 14:52:08 +0200 Subject: [PATCH 04/11] Add ten prime numbers --- bot.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bot.js b/bot.js index 5e54000cd..0c8e413f3 100755 --- a/bot.js +++ b/bot.js @@ -132,6 +132,13 @@ controller.hears(['what is my name','who am i'],'direct_message,direct_mention,m }); }); +controller.hears(['prime','first ten prime numbers'],'direct_message,direct_mention,mention',function(bot, message) { + + controller.storage.users.get(message.user,function(err, user) { + bot.reply(message,'1 ,2 ,3, 5, 7, 11, 13, 17, 19, 23'); + }); +}); + controller.hears(['who make you','who made you'],'direct_message,direct_mention,mention',function(bot, message) { controller.storage.users.get(message.user,function(err, user) { From 196f8548c8e68f5f07de71643be56c48799f7aea Mon Sep 17 00:00:00 2001 From: ChanhLeNguyen Date: Mon, 22 Feb 2016 15:06:20 +0200 Subject: [PATCH 05/11] Add check prime number --- bot.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/bot.js b/bot.js index 0c8e413f3..b36ea43a6 100755 --- a/bot.js +++ b/bot.js @@ -139,6 +139,28 @@ controller.hears(['prime','first ten prime numbers'],'direct_message,direct_ment }); }); +controller.hears(['prime (.*)'],'direct_message,direct_mention,mention',function(bot, message) { + var matches = message.text.match(/prime (.*)/i); + var nume = matches[1]; + controller.storage.users.get(message.user,function(err, user) { + controller.storage.users.save(user,function(err, id) { + if(isPrime(nume)){ + bot.reply(message,nume + 'is prime number'); + }else{ + bot.reply(message,nume + 'is not prime number'); + } + }); + }); +}); + +function isPrime(number) { + var start = 2; + while (start <= Math.sqrt(number)) { + if (number % start++ < 1) return false; + } + return number > 1; +} + controller.hears(['who make you','who made you'],'direct_message,direct_mention,mention',function(bot, message) { controller.storage.users.get(message.user,function(err, user) { From 7281662ef905da304920c2365a63712b50781d81 Mon Sep 17 00:00:00 2001 From: ChanhLeNguyen Date: Mon, 22 Feb 2016 15:13:19 +0200 Subject: [PATCH 06/11] Fix prime x --- bot.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/bot.js b/bot.js index b36ea43a6..b91db0742 100755 --- a/bot.js +++ b/bot.js @@ -135,21 +135,20 @@ controller.hears(['what is my name','who am i'],'direct_message,direct_mention,m controller.hears(['prime','first ten prime numbers'],'direct_message,direct_mention,mention',function(bot, message) { controller.storage.users.get(message.user,function(err, user) { - bot.reply(message,'1 ,2 ,3, 5, 7, 11, 13, 17, 19, 23'); + bot.reply(message,'1 ,2 ,3, 5, 7, 11, 13, 17, 19, 23, 29'); }); }); controller.hears(['prime (.*)'],'direct_message,direct_mention,mention',function(bot, message) { var matches = message.text.match(/prime (.*)/i); var nume = matches[1]; + bot.reply(message,nume + 'is prime number'); controller.storage.users.get(message.user,function(err, user) { - controller.storage.users.save(user,function(err, id) { if(isPrime(nume)){ bot.reply(message,nume + 'is prime number'); }else{ bot.reply(message,nume + 'is not prime number'); - } - }); + }); }); }); From 6e9cd7c87cbb5c30f08feb453fb98585c96d0ead Mon Sep 17 00:00:00 2001 From: ChanhLeNguyen Date: Mon, 22 Feb 2016 15:18:18 +0200 Subject: [PATCH 07/11] Finish prime numbers --- bot.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/bot.js b/bot.js index b91db0742..5c49916ba 100755 --- a/bot.js +++ b/bot.js @@ -132,7 +132,7 @@ controller.hears(['what is my name','who am i'],'direct_message,direct_mention,m }); }); -controller.hears(['prime','first ten prime numbers'],'direct_message,direct_mention,mention',function(bot, message) { +controller.hears(['ten prime','first ten prime numbers'],'direct_message,direct_mention,mention',function(bot, message) { controller.storage.users.get(message.user,function(err, user) { bot.reply(message,'1 ,2 ,3, 5, 7, 11, 13, 17, 19, 23, 29'); @@ -142,13 +142,12 @@ controller.hears(['prime','first ten prime numbers'],'direct_message,direct_ment controller.hears(['prime (.*)'],'direct_message,direct_mention,mention',function(bot, message) { var matches = message.text.match(/prime (.*)/i); var nume = matches[1]; - bot.reply(message,nume + 'is prime number'); controller.storage.users.get(message.user,function(err, user) { if(isPrime(nume)){ - bot.reply(message,nume + 'is prime number'); + bot.reply(message,nume + ' is prime number'); }else{ - bot.reply(message,nume + 'is not prime number'); - }); + bot.reply(message,nume + ' is not prime number'); + } }); }); From 188b96338d74dcc219b88731fd7c7d501137ba57 Mon Sep 17 00:00:00 2001 From: ChanhLeNguyen Date: Mon, 22 Feb 2016 15:21:45 +0200 Subject: [PATCH 08/11] Finnish prime 2 --- bot.js | 1 + 1 file changed, 1 insertion(+) diff --git a/bot.js b/bot.js index 5c49916ba..299420007 100755 --- a/bot.js +++ b/bot.js @@ -147,6 +147,7 @@ controller.hears(['prime (.*)'],'direct_message,direct_mention,mention',function bot.reply(message,nume + ' is prime number'); }else{ bot.reply(message,nume + ' is not prime number'); + bot.reply(message,'1 ,2 ,3, 5, 7, 11, 13, 17, 19, 23, 29'); } }); }); From b25bdab81ef474c74872738877a27c448c849e31 Mon Sep 17 00:00:00 2001 From: ChanhLeNguyen Date: Mon, 22 Feb 2016 15:35:39 +0200 Subject: [PATCH 09/11] Add .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..3c3629e64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules From 1d48a73adf5099307f1f9a4132d6e457f0334706 Mon Sep 17 00:00:00 2001 From: ChanhLeNguyen Date: Tue, 23 Feb 2016 11:55:19 +0200 Subject: [PATCH 10/11] Fix fibonacci and prime --- bot.js | 61 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/bot.js b/bot.js index b70042fa8..e550c8418 100755 --- a/bot.js +++ b/bot.js @@ -133,26 +133,6 @@ controller.hears(['what is my name','who am i'],'direct_message,direct_mention,m }); }); -controller.hears(['ten prime','first ten prime numbers'],'direct_message,direct_mention,mention',function(bot, message) { - - controller.storage.users.get(message.user,function(err, user) { - bot.reply(message,'1 ,2 ,3, 5, 7, 11, 13, 17, 19, 23, 29'); - }); -}); - -controller.hears(['prime (.*)'],'direct_message,direct_mention,mention',function(bot, message) { - var matches = message.text.match(/prime (.*)/i); - var nume = matches[1]; - controller.storage.users.get(message.user,function(err, user) { - if(isPrime(nume)){ - bot.reply(message,nume + ' is prime number'); - }else{ - bot.reply(message,nume + ' is not prime number'); - bot.reply(message,'1 ,2 ,3, 5, 7, 11, 13, 17, 19, 23, 29'); - } - }); -}); - function isPrime(number) { var start = 2; while (start <= Math.sqrt(number)) { @@ -206,30 +186,31 @@ 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'); } }); controller.hears(['fibonacci ([0-9]+)'], 'direct_message,direct_mention,mention', function(bot, message) { var parameter = parseInt(message.match[1]); - + var fibonacci = calculateFibonacciUpto(parameter); - if (fibonacci[fibonacci.length-1] !== parameter) { bot.reply(message, 'That is not a Fibonacci number!'); } else { - bot.reply(message, fibonacci.slice(fibonacci.length-10,fibonacci.length).join(', ')); + for (var i = 0; i < 5; i++){ + fibonacci.push(fibonacci[fibonacci.length-2] + fibonacci[fibonacci.length-1]) + } + bot.reply(message, fibonacci.slice(fibonacci.length - 5,fibonacci.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; } @@ -262,16 +243,17 @@ controller.hears('prime (.*)',['direct_message', 'direct_mention', 'mention'],fu var parameter = parseInt(message.match[1]); if (MathHelper.isPrime(parameter)) { + bot.reply(message, "your parameter: " + parameter + " is a Prime number"); var primes = new Array(); - var number = parameter + 1; + var number = parameter - 1; - while (primes.length < 10) { + while (primes.length < 10 && number >=0) { if (MathHelper.isPrime(number)) { primes.push(number); } - number++; + number--; } var reply = ""; @@ -282,7 +264,24 @@ controller.hears('prime (.*)',['direct_message', 'direct_mention', 'mention'],fu return bot.reply(message, reply); } else { - return bot.reply(message, "your parameter: " + parameter + " is not Prime number"); + bot.reply(message, "your parameter: " + parameter + " is not Prime number"); + var primes = new Array(); + var number = parameter - 1; + + while (primes.length < 10 && number >=0) { + + if (MathHelper.isPrime(number)) { + primes.push(number); + } + + number--; + } + + var reply = ""; + for (var i = 0; i < primes.length; i++) { + reply += primes[i] + " "; + } + + return bot.reply(message, reply); } }); - From 5b6bfbe6aa22b7a107bd75bbccd694e796e53dc2 Mon Sep 17 00:00:00 2001 From: ChanhLeNguyen Date: Tue, 23 Feb 2016 14:25:54 +0200 Subject: [PATCH 11/11] Add How is the temperature in ... --- .gitmodules | 3 +++ bot.js | 27 ++++++++++++++++++++++++++- weather | 1 + 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 .gitmodules create mode 160000 weather diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..df1465a1c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "weather"] + path = weather + url = https://github.com/cmfatih/weather diff --git a/bot.js b/bot.js index e550c8418..9b677e828 100755 --- a/bot.js +++ b/bot.js @@ -66,6 +66,9 @@ This bot demonstrates many of the core features of Botkit: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ + + + if (!process.env.token) { console.log('Error: Specify token in environment'); process.exit(1); @@ -83,7 +86,6 @@ var bot = controller.spawn({ token: process.env.token }).startRTM(); - controller.hears(['hello','hi'],'direct_message,direct_mention,mention',function(bot, message) { bot.api.reactions.add({ @@ -285,3 +287,26 @@ controller.hears('prime (.*)',['direct_message', 'direct_mention', 'mention'],fu return bot.reply(message, reply); } }); + +var weather = require('weather-js'); + +weather.find({search: 'San Francisco, CA', degreeType: 'F'}, function(err, result) { + if(err) console.log(err); + + console.log(JSON.stringify(result, null, 2)); +}); + +controller.hears('How is the temperature in (.*)',['direct_message','mention'],function(bot,message) { + + var city = message.match[1]; + console.log(city); + + weather.find({search: city, degreeType: 'C'}, function(err, result) { + if(err) console.log(err); + + console.log(JSON.stringify(result, null, 2)); + + return bot.reply(message,'The temperature is ' + result[0]['current']['temperature'] + ' degree Celcius'); + }); + +}); diff --git a/weather b/weather new file mode 160000 index 000000000..cc33373de --- /dev/null +++ b/weather @@ -0,0 +1 @@ +Subproject commit cc33373de4fc850b050efe844c6e5d6089aa44c0