Made natural language functional again with a bit of a mess\n I forcibly added username and privateMessage variable to metadata\n I should look into having an interface for that instead in the User.js file\nShould work towards cleaning up the code soon

This commit is contained in:
Brandon Rozek 2016-08-14 20:15:07 -04:00
parent aebd5a9bb9
commit 0795d27b67
5 changed files with 44 additions and 63 deletions

View file

@ -35,7 +35,9 @@ module.exports = function() {
} }
//Gives Rozbot's response //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 //Store whether or not an app wants to listen to the next message
var inAppScope = user.inAppScope var inAppScope = user.inAppScope
//Used to allow apps to get the next message //Used to allow apps to get the next message
@ -44,11 +46,19 @@ module.exports = function() {
var args = [message, user.send]; var args = [message, user.send];
//Find the right command to run //Find the right command to run
var command = this.commandList.find(function(cmd) { 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) //Run the command using user's contextual data (app by app basis)
if (command !== undefined) { 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));
} }
} }
} }

View file

@ -15,22 +15,16 @@ rozbot.extend(require('./lib/commands/grabUpdates.js'));
rozbot.extend(require('./lib/commands/grabTweets.js')); rozbot.extend(require('./lib/commands/grabTweets.js'));
rozbot.extend(require('./lib/commands/displayTweet.js')); rozbot.extend(require('./lib/commands/displayTweet.js'));
rozbot.extend(require('./lib/commands/Hangman.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/grabPictures.js'));
rozbot.extend(require('./lib/commands/grabWikipedia.js')); rozbot.extend(require('./lib/commands/grabWikipedia.js'));
rozbot.extend(require('./lib/commands/grabDefinition.js')); rozbot.extend(require('./lib/commands/grabDefinition.js'));
rozbot.extend(require('./lib/commands/calculate.js')); rozbot.extend(require('./lib/commands/calculate.js'));
rozbot.extend(require('./lib/commands/timer.js')); rozbot.extend(require('./lib/commands/timer.js'));
rozbot.extend(require('./lib/commands/search.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.extend(require('./lib/commands/queryDuckDuckGo.js'));
//rozbot.respond(process.argv[2], rozbot.getUser("Command Line") || rozbot.addUser("Command Line")); rozbot.respond(process.argv[2], rozbot.getUser("Command Line") || rozbot.addUser("Command Line", function(msg) {
rozbot.respond("Let's play hangman!", rozbot.getUser("Command Line") || rozbot.addUser("Command Line", function(msg) {
console.log(msg); console.log(msg);
})); }), {privateMessage: true});
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"));

View file

@ -4,9 +4,9 @@ var cheeriop = require('../promise/cheerio.js');
var promise = require('promise-polyfill'); var promise = require('promise-polyfill');
var grabTokens = require('../helpers/grabTokens.js'); var grabTokens = require('../helpers/grabTokens.js');
var condition = function(text) { var condition = function(text, userData) {
var tokens = grabTokens(text); 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) { module.exports = new Command("Hangman", condition, function(text, send, userData) {
var GUESSES_ALLOWED = 7; var GUESSES_ALLOWED = 7;

View file

@ -2,9 +2,9 @@ var Command = require('./Command.js');
var grabTokens = require('../helpers/grabTokens.js'); var grabTokens = require('../helpers/grabTokens.js');
var promise = require('promise-polyfill'); var promise = require('promise-polyfill');
var condition = function(text) { var condition = function(text, userData) {
var tokens = grabTokens(text); 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) { module.exports = new Command("RockPaperScissors", condition, function(text, send, userData) {

View file

@ -1,23 +1,27 @@
/***
Keep disabled until major rewrite has gone under way
***/
var Command = require('./Command.js'); var Command = require('./Command.js');
var grabTokens = require('../helpers/grabTokens.js'); var grabTokens = require('../helpers/grabTokens.js');
var greetings = "hello|hi|hey|yo|morning|afternoon|evening"; var greetings = "hello|hi|hey|yo|morning|afternoon|evening";
var wantSomething = /(\w+) (want|wants) ([^.&^\n]+)/i;
var happy = "yay|woo|yess|:D|:\\)" var happy = "yay|woo|yess|:D|:\\)"
var url = "link|url"; 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) { module.exports = new Command("NaturalSpeech", condition, function(text, send, userData) {
var from = extra.from || ""; var from = userData.username || "";
var privateMessage = extra.privateMessage || false; var privateMessage = userData.privateMessage || false;
var tokens = grabTokens(text); var tokens = grabTokens(text);
/* /*
Link to codeshare 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)) { else if (new RegExp(happy, 'i').test(text)) {
send("Yeah!"); 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. 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')) { else if ((tokens.contain("who") || tokens.contain("what")) && tokens.contain("brandon") && tokens.contain('rozek')) {
send("Brandon is the most awesome person in the world."); send("Brandon Rozek 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");
} }
/* /*
What is Brandon up to? -> [Lists projects] 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\ managing Math I/O\n\
working on his apps codeshare or babbler.\n\ working on his apps codeshare or babbler.\n\
running his radio (https://radio.zeropointshift.com)\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."); 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]! Good morning Rozbot! -> Hello [user]!
*/ */
@ -101,10 +87,10 @@ module.exports = new Command("NaturalSpeech", condition, function(text, send, ex
send("Hello " + from + "!"); 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"))) { 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 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")) { else if (tokens.superContain("rozbot") && tokens.superContain("what") && tokens.contain("job")) {
send("Chilling on IRC doing whatever Brandon programs me to do."); 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");
}
}) })