Add weather command
This commit is contained in:
parent
0853f97e99
commit
b0188483ac
2 changed files with 57 additions and 0 deletions
27
commands/misc/weather.js
Normal file
27
commands/misc/weather.js
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
const getWeather = require('../../util/getWeather')
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: "weather",
|
||||||
|
description: "Returns what the weather is for the specified location",
|
||||||
|
async execute({message, args}) {
|
||||||
|
if(args.length < 1){
|
||||||
|
message.channel.send(`You have to provide a location`)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let location = args.join()
|
||||||
|
let weather = await getWeather(location).catch((err) => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
|
||||||
|
// convert °C to °F and add it after C temperature in parentheses
|
||||||
|
let tempRegex = /(-?\d+)(?=°C)/g;
|
||||||
|
if(weather.success){
|
||||||
|
let tempInCelsius = weather.weather.match(tempRegex)[0];
|
||||||
|
let tempInFahrenheit = `(${Math.round(tempInCelsius * 1.8 + 32)}°F)`;
|
||||||
|
let splitWeather = weather.weather.split("°C");
|
||||||
|
weather.weather = `${splitWeather[0]}°C ${tempInFahrenheit} ${splitWeather[1]}`
|
||||||
|
}
|
||||||
|
message.channel.send(weather.weather);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
30
util/getWeather.js
Normal file
30
util/getWeather.js
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
const https = require('https');
|
||||||
|
|
||||||
|
module.exports = async function (location) {
|
||||||
|
const url = `https://wttr.in/${location}?format=4&M` // 4 = one line, M = metric wind speed
|
||||||
|
let success = false;
|
||||||
|
let weather = await new Promise((resolve, reject) => {
|
||||||
|
https.get(url, (res) => {
|
||||||
|
let data = '';
|
||||||
|
res.on('data', (chunk) => {
|
||||||
|
data += chunk;
|
||||||
|
});
|
||||||
|
res.on('end', () => {
|
||||||
|
if(res.statusCode === 404){
|
||||||
|
reject(`Couldn't find weather for ${location}`);
|
||||||
|
return;
|
||||||
|
}else if(res.statusCode != 200){
|
||||||
|
reject(`Something went wrong while getting the weather for ${location}`);
|
||||||
|
} else{
|
||||||
|
resolve(data);
|
||||||
|
success = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}).on("error", (err) => {
|
||||||
|
reject(err);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
return {success: success, weather: weather};
|
||||||
|
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue