diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..3c3629e64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules 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 00eb7b9bd..9b677e828 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: @@ -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({ @@ -133,6 +135,21 @@ controller.hears(['what is my name','who am i'],'direct_message,direct_mention,m }); }); +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) { + bot.reply(message,'Metro group made me. Hihi'); + }); +}); + controller.hears(['shutdown'],'direct_message,direct_mention,mention',function(bot, message) { @@ -171,30 +188,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; } @@ -227,16 +245,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 = ""; @@ -247,7 +266,47 @@ 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); } }); +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