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
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));
}
}
}

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/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});

View file

@ -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;

View file

@ -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) {

View file

@ -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");
}
})