irc_bot/components/Weather.js

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;