diff --git a/Rozbot.js b/Rozbot.js index b70c24f..30fabef 100644 --- a/Rozbot.js +++ b/Rozbot.js @@ -35,7 +35,9 @@ module.exports = function() { } //Gives Rozbot's response - this.respond = function(message, user) { + this.respond = function(message, user, extra) { + extra = extra || {}; + extra.privateMessage = extra.privateMessage || false; //Store whether or not an app wants to listen to the next message var inAppScope = user.inAppScope //Used to allow apps to get the next message @@ -44,11 +46,19 @@ module.exports = function() { var args = [message, user.send]; //Find the right command to run var command = this.commandList.find(function(cmd) { - return cmd.condition(message) === true; + var userData = user.getData(cmd.name); + //Attach whether or not this is a private message + userData.privateMessage = extra.privateMessage; + return cmd.condition(message, userData ) === true; }); //Run the command using user's contextual data (app by app basis) if (command !== undefined) { - command.respond.apply(command, args.concat(user.getData(command.name))); + var userData = user.getData(command.name); + //Attach whether or not this is a private message + userData.privateMessage = extra.privateMessage; + //Attach the username + userData.username = user.username; + command.respond.apply(command, args.concat(userData)); } } } diff --git a/example.js b/example.js index 0520799..6fbf524 100644 --- a/example.js +++ b/example.js @@ -15,22 +15,16 @@ rozbot.extend(require('./lib/commands/grabUpdates.js')); rozbot.extend(require('./lib/commands/grabTweets.js')); rozbot.extend(require('./lib/commands/displayTweet.js')); rozbot.extend(require('./lib/commands/Hangman.js')); +rozbot.extend(require('./lib/commands/RockPaperScissors.js')); rozbot.extend(require('./lib/commands/grabPictures.js')); rozbot.extend(require('./lib/commands/grabWikipedia.js')); rozbot.extend(require('./lib/commands/grabDefinition.js')); rozbot.extend(require('./lib/commands/calculate.js')); rozbot.extend(require('./lib/commands/timer.js')); rozbot.extend(require('./lib/commands/search.js')); -//rozbot.extend(require('./lib/commands/naturalSpeech.js')); +rozbot.extend(require('./lib/commands/naturalSpeech.js')); rozbot.extend(require('./lib/commands/queryDuckDuckGo.js')); -//rozbot.respond(process.argv[2], rozbot.getUser("Command Line") || rozbot.addUser("Command Line")); -rozbot.respond("Let's play hangman!", rozbot.getUser("Command Line") || rozbot.addUser("Command Line", function(msg) { +rozbot.respond(process.argv[2], rozbot.getUser("Command Line") || rozbot.addUser("Command Line", function(msg) { console.log(msg); -})); -var letters = ["a", "e", "i", "o", "u", "b"] -rozbot.respond(letters[0], rozbot.getUser("Command Line")); -rozbot.respond(letters[1], rozbot.getUser("Command Line")); -rozbot.respond(letters[2], rozbot.getUser("Command Line")); -rozbot.respond(letters[3], rozbot.getUser("Command Line")); -rozbot.respond(letters[4], rozbot.getUser("Command Line")); +}), {privateMessage: true}); diff --git a/lib/commands/Hangman.js b/lib/commands/Hangman.js index 01f1010..732d4a9 100644 --- a/lib/commands/Hangman.js +++ b/lib/commands/Hangman.js @@ -4,9 +4,9 @@ var cheeriop = require('../promise/cheerio.js'); var promise = require('promise-polyfill'); var grabTokens = require('../helpers/grabTokens.js'); -var condition = function(text) { +var condition = function(text, userData) { var tokens = grabTokens(text); - return tokens.contain('play') && tokens.contain('hangman'); + return tokens.contain('play') && tokens.contain('hangman') && (tokens.contain("rozbot") || userData.privateMessage); } module.exports = new Command("Hangman", condition, function(text, send, userData) { var GUESSES_ALLOWED = 7; diff --git a/lib/commands/RockPaperScissors.js b/lib/commands/RockPaperScissors.js index 4d6a897..d5e6c6b 100644 --- a/lib/commands/RockPaperScissors.js +++ b/lib/commands/RockPaperScissors.js @@ -2,9 +2,9 @@ var Command = require('./Command.js'); var grabTokens = require('../helpers/grabTokens.js'); var promise = require('promise-polyfill'); -var condition = function(text) { +var condition = function(text, userData) { var tokens = grabTokens(text); - return tokens.contain("play") && (tokens.contain("rock") && tokens.contain("paper") && tokens.contain("scissors")) + return tokens.contain("play") && (tokens.contain("rock") && tokens.contain("paper") && tokens.contain("scissors")) && (tokens.contain("rozbot") || userData.privateMessage) } module.exports = new Command("RockPaperScissors", condition, function(text, send, userData) { diff --git a/lib/commands/naturalSpeech.js b/lib/commands/naturalSpeech.js index a95b92b..e66da64 100644 --- a/lib/commands/naturalSpeech.js +++ b/lib/commands/naturalSpeech.js @@ -1,23 +1,27 @@ -/*** - Keep disabled until major rewrite has gone under way - - - -***/ - var Command = require('./Command.js'); var grabTokens = require('../helpers/grabTokens.js'); var greetings = "hello|hi|hey|yo|morning|afternoon|evening"; -var wantSomething = /(\w+) (want|wants) ([^.&^\n]+)/i; var happy = "yay|woo|yess|:D|:\\)" var url = "link|url"; -var condition = function(text) { - +var condition = function(text, userData) { + var privateMessage = userData.privateMessage || false; + var tokens = grabTokens(text); + return (new RegExp(url).test(text) && tokens.contain("codeshare")) || + (tokens.contain(":(")) || + (tokens.superContain("thank") && (tokens.superContain("rozbot") || privateMessage)) || + (text.toLowerCase() === "rozbot?") || + ((tokens.superContain("rozbot") || privateMessage) && tokens.superContain("hug")) || + (new RegExp(happy, 'i').test(text)) || + ((tokens.contain("who") || tokens.contain("what")) && tokens.contain("brandon") && tokens.contain('rozek')) || + ((tokens.contain("how") || tokens.contain("doing") || tokens.contain("up")) && tokens.contain("brandon")) || + ((tokens.superContain('rozbot') || privateMessage) && new RegExp(greetings, 'i').test(text)) || + ((tokens.superContain("rozbot") || privateMessage) && tokens.superContain("what") && (tokens.contain("up") || tokens.contain("doing"))) || + (tokens.superContain("rozbot") && tokens.superContain("what") && tokens.contain("job")) } -module.exports = new Command("NaturalSpeech", condition, function(text, send, extra) { - var from = extra.from || ""; - var privateMessage = extra.privateMessage || false; +module.exports = new Command("NaturalSpeech", condition, function(text, send, userData) { + var from = userData.username || ""; + var privateMessage = userData.privateMessage || false; var tokens = grabTokens(text); /* Link to codeshare @@ -55,25 +59,11 @@ module.exports = new Command("NaturalSpeech", condition, function(text, send, ex else if (new RegExp(happy, 'i').test(text)) { send("Yeah!"); } - /* - [user] wants [item] -> Gives [user] [item] - */ - else if (wantSomething.test(text)) { - var responseTokens = wantSomething.exec(text); - var person = (responseTokens[1].toLowerCase() === "i")? from: responseTokens[1]; - send("Gives " + person + " " + responseTokens[3]); - } /* Who is Brandon? -> Brandon is the most awesome person in the world. */ else if ((tokens.contain("who") || tokens.contain("what")) && tokens.contain("brandon") && tokens.contain('rozek')) { - send("Brandon is the most awesome person in the world."); - } - /* - Who is Rozbot? -> A friendly neighborhood IRC bot - */ - else if (tokens.contain('who') || tokens.contain('what') && tokens.superContain("rozbot")&& !tokens.contain('radio')) { - send("A friendly neighborhood IRC bot"); + send("Brandon Rozek is the most awesome person in the world."); } /* What is Brandon up to? -> [Lists projects] @@ -86,14 +76,10 @@ module.exports = new Command("NaturalSpeech", condition, function(text, send, ex managing Math I/O\n\ working on his apps codeshare or babbler.\n\ running his radio (https://radio.zeropointshift.com)\n\ + managing his raspberry pi infrastructure\n\ + reading some books\n\ Hopefully, he's not working on me. Cuz' I'm perfect."); } - /* - How are you Rozbot? -> I'm awesome - */ - else if ((tokens.superContain("rozbot") || privateMessage) && tokens.contain("how")) { - send("I'm awesome."); - } /* Good morning Rozbot! -> Hello [user]! */ @@ -101,10 +87,10 @@ module.exports = new Command("NaturalSpeech", condition, function(text, send, ex send("Hello " + from + "!"); } /* - What are you up to Rozbot? -> Currently working on my job + What are you up to Rozbot? -> Just doing my job */ else if ((tokens.superContain("rozbot") || privateMessage) && tokens.superContain("what") && (tokens.contain("up") || tokens.contain("doing"))) { - send("Currently working on my job"); + send("Just doing my job"); } /* What is your job Rozbot? -> Chilling on IRC doing whatever Brandon programs me to do @@ -112,14 +98,5 @@ module.exports = new Command("NaturalSpeech", condition, function(text, send, ex else if (tokens.superContain("rozbot") && tokens.superContain("what") && tokens.contain("job")) { send("Chilling on IRC doing whatever Brandon programs me to do."); } - /* - Start Greenteam meeting -> [instructions for mumble] - */ - else if (tokens.contain("start") && tokens.contain("greenteam") && tokens.contain("meeting")) { - send("Everyone please connect to mumble\n\ - Host: zeropointshift.com\n\ - Leave port at default\n\ - Give yourself a sensible username\n\ - Label it whatever you want"); - } + })