38 lines
1.3 KiB
JavaScript
38 lines
1.3 KiB
JavaScript
import axios from "axios";
|
|
import Color from "./Color.js";
|
|
|
|
const Weather = (event) => {
|
|
let reqCity = event.message.match(/,w ([A-Za-z0-9 ]+)/);
|
|
// let city = event.message.split(" ");
|
|
let city = encodeURIComponent(reqCity[1].trim());
|
|
|
|
// check if user posted a city TODO
|
|
|
|
return new Promise((resolve, reject) => {
|
|
axios({
|
|
method: "get",
|
|
url: `https://wttr.in/${city}?format=j1`,
|
|
}).then((r) => {
|
|
let weatherDesc = r.data.current_condition[0].weatherDesc[0].value;
|
|
let humidity = r.data.current_condition[0].humidity;
|
|
let tempC = r.data.current_condition[0].temp_C;
|
|
let tempF = r.data.current_condition[0].temp_F;
|
|
let windspeedKmph = r.data.current_condition[0].windspeedKmph;
|
|
let windspeedMiles = r.data.current_condition[0].windspeedMiles;
|
|
let areaName = r.data.nearest_area[0].areaName[0].value;
|
|
let country = r.data.nearest_area[0].country[0].value;
|
|
let region = r.data.nearest_area[0].region[0].value;
|
|
|
|
let output = `${Color("Weather")} (${
|
|
event.nick
|
|
}) ${areaName}, ${region}, ${country} | ${tempC}C/${tempF}F/${
|
|
Number(tempC) + 273.15
|
|
}K | ${weatherDesc} | Humidity: ${humidity}% | Wind: ${windspeedKmph}km/h/${windspeedMiles}mi/h`;
|
|
|
|
resolve(output);
|
|
});
|
|
});
|
|
};
|
|
|
|
export default Weather;
|