do

local images_enabled = true;

local function get_sprite(path)
  local url = "http://pokeapi.co/"..path
  local b,c = http.request(url)
  local data = json:decode(b)
  local image = data.image
  return image
end

local function callback(extra)
  send_msg(extra.receiver, extra.text, ok_cb, false)
end

local function send_pokemon(query, receiver)
  local url = "http://pokeapi.co/api/v1/pokemon/" .. query .. "/"
  local res,code = http.request(url)
  if code ~= 200 then return "Kein Pokémon gefunden" end
  local pokemon = json:decode(res)

  if not pokemon then
    return 'Kein Pokémon gefunden.'
  end

  local text = 'Pokédex ID: '..pokemon.pkdx_id
			   ..'\nName: '..pokemon.name
			   ..'\nTyp: '..pokemon.types[1].name
			   ..'\nGewicht: '..pokemon.height..' kg'
			   ..'\nGröße: '..pokemon.weight..' cm'
			   ..'\nGeschwindigkeit: '..pokemon.speed
			   ..'\nSpezies: '..pokemon.species
			   --[[if pokemon.evolutions then
				text = text..'\nEntwickelt sich zu '..pokemon.evolutions[1].to
			   end]]
		
  local image = nil

  if images_enabled and pokemon.sprites and pokemon.sprites[1] then
    local sprite = pokemon.sprites[1].resource_uri
    image = get_sprite(sprite)
  end

  if image then
    local image = "http://pokeapi.co"..image
	local cb_extra = {
      receiver=receiver,
      url=image
    }
    send_msg(receiver, text, send_photo_from_url_callback, cb_extra)
  else
    return text
  end
end

local function run(msg, matches)
  local receiver = get_receiver(msg)
  local query = URL.escape(matches[1])
  local query = string.lower(query)
  return send_pokemon(query, receiver)
end

return {
  description = "Pokedex für Telegram",
  usage = {"/pokedex [Name/ID]","/pokemon [Name/ID]","/pkmn [Name/ID]"},
  patterns = {"^/pokedex (.*)$","^/pokemon (.+)$","^/pkmn (.+)$"},
  run = run
}

end