45 lines
1.2 KiB
Lua
45 lines
1.2 KiB
Lua
do
|
|
|
|
local BASE_URL = "http://api.openweathermap.org/data/2.5"
|
|
|
|
function get_weather(location)
|
|
print("Finding weather in ", location)
|
|
local b, c, h = http.request(BASE_URL.."/weather?q=" .. location .. "&units=metric")
|
|
local weather = json:decode(b)
|
|
print("Weather returns", weather)
|
|
local city = weather.name
|
|
local country = weather.sys.country
|
|
local temp = 'The temperature in ' .. city .. ' (' .. country .. ')'
|
|
temp = temp .. ' is ' .. weather.main.temp .. '°C'
|
|
conditions = 'Current conditions are: ' .. weather.weather[1].description
|
|
|
|
if weather.weather[1].main == 'Clear' then
|
|
conditions = conditions .. ' ☀'
|
|
elseif weather.weather[1].main == 'Clouds' then
|
|
conditions = conditions .. ' ☁☁'
|
|
elseif weather.weather[1].main == 'Rain' then
|
|
conditions = conditions .. ' ☔'
|
|
elseif weather.weather[1].main == 'Thunderstorm' then
|
|
conditions = conditions .. ' ☔☔☔☔'
|
|
end
|
|
|
|
return temp .. '\n' .. conditions
|
|
end
|
|
|
|
function run(msg, matches)
|
|
if string.len(matches[1]) > 2 then
|
|
city = matches[1]
|
|
else
|
|
city = "Madrid,ES"
|
|
end
|
|
return get_weather(city)
|
|
end
|
|
|
|
return {
|
|
description = "weather in that city (Madrid is default)",
|
|
usage = "!weather (city)",
|
|
patterns = {"^!weather(.*)$"},
|
|
run = run
|
|
}
|
|
|
|
end |