mirror of
https://github.com/Brandon-Rozek/Rozbot.git
synced 2024-11-07 20:30:34 -05:00
49 lines
1.7 KiB
JavaScript
49 lines
1.7 KiB
JavaScript
|
var Command = require('./Command.js');
|
||
|
var grabURL = require('../helpers/grabURL.js');
|
||
|
var grabTokens = require('../helpers/grabTokens.js');
|
||
|
|
||
|
var condition = function(text) {
|
||
|
var tokens = grabTokens(text);
|
||
|
return command.id != '' && tokens.contain('weather');
|
||
|
}
|
||
|
var command = new Command("Weather", condition, function(text, send, userData) {
|
||
|
var tokens = grabTokens(text);
|
||
|
var location = tokens.slice(tokens.indexOf('weather') + 1, tokens.length);
|
||
|
//Function to get the weather
|
||
|
var getWeather = function(loc) {
|
||
|
grabURL("http://api.openweathermap.org/data/2.5/weather?q=" + loc.join('+') + "&units=imperial&appid=" + command.id)
|
||
|
.then(function(response) { return response.body.toString(); })
|
||
|
.then(function(text) { return JSON.parse(text); })
|
||
|
.then(function(json) {
|
||
|
if (json.cod == 401) {
|
||
|
send("Invalid API key set");
|
||
|
} else {
|
||
|
send(json.weather[0].description + " and the temperature is " + json.main.temp + " degrees Fahrenheit in " + json.name + "\nWeather provided by OpenWeatherMap");
|
||
|
}
|
||
|
}).catch(function(error) { send(error); });
|
||
|
}
|
||
|
//Did the person not specify the location and have no location set?
|
||
|
if (location.length === 0 && !userData.isset("location")) {
|
||
|
userData.prompt("Where do you live?").then(function(loc) {
|
||
|
userData.setProperty("location", loc.split(" "));
|
||
|
getWeather(loc.split(" "));
|
||
|
});
|
||
|
}
|
||
|
//The person specified the location
|
||
|
else if (location.length !== 0) {
|
||
|
getWeather(location);
|
||
|
}
|
||
|
//The person didn't specify but he has a location saved
|
||
|
else {
|
||
|
getWeather(userData.getProperty("location"));
|
||
|
}
|
||
|
});
|
||
|
|
||
|
command.id = '';
|
||
|
//Need to call this with a proper id for this command to work
|
||
|
command.setId = function(id) {
|
||
|
this.id = id;
|
||
|
}
|
||
|
|
||
|
module.exports = command;
|