do

local BASE_URL = "http://api.openweathermap.org/data/2.5/weather"

local function get_weather(location)
  print("Finde Wetter in ", location)
  local location = string.gsub(location," ","+")
  local url = BASE_URL
  local apikey = cred_data.owm_apikey
  local url = url..'?q='..location
  local url = url..'&lang=de&units=metric&APPID='..apikey

  local b, c, h = http.request(url)
  if c ~= 200 then return nil end

  local weather = json:decode(b)
  local city = weather.name
  if weather.sys.country == 'none' then
    country = ''
  else
    country = ' ('..weather.sys.country..')'
  end
  local temperature = round(weather.main.temp, 1)
  local temp = 'Wetter in '..city..country..':\n'..temperature..'°C'
  local conditions = ' | '..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..' ☔☔☔☔'
  else
     conditions = conditions..''
  end
  return temp..conditions
end

local function run(msg, matches)
  local user_id = msg.from.id

  if matches[1] ~= '/wetter' then 
    city = matches[1]
  else
    local set_location = get_location(user_id)
	if not set_location then
	  city = 'Berlin'
	else
	  city = set_location
	end
  end
  local text = get_weather(city)
  if not text then
    text = 'Konnte das Wetter von dieser Stadt nicht bekommen.'
  end
  return text
end

return {
  description = "Wetter für deinen oder einen gewählten Ort", 
  usage = {
    "/wetter: Wetter für deinen Wohnort (!location set [Ort])",
    "/wetter (Stadt): Wetter für diese Stadt"
  },
  patterns = {
    "^/wetter$",
	"^/wetter (.*)$"
  }, 
  run = run 
}

end