- GPS: Inline
- GMaps: Inline - get_coords() gibt jetzt auch die Adresse zurück
This commit is contained in:
		| @@ -4,6 +4,9 @@ gMaps.command = 'loc <Ort>' | ||||
|  | ||||
| function gMaps:init(config) | ||||
| 	gMaps.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('loc', true).table | ||||
| 	gMaps.inline_triggers = { | ||||
| 	  "^loc (.*)" | ||||
| 	} | ||||
| 	gMaps.doc = [[* | ||||
| ]]..config.cmd_pat..[[loc* _<Ort>_: Sendet Ort via Google Maps]] | ||||
| end | ||||
| @@ -16,22 +19,33 @@ function gMaps:get_staticmap(area, lat, lon) | ||||
|   return file | ||||
| end | ||||
|  | ||||
| function gMaps:inline_callback(inline_query, config) | ||||
|   local place = matches[1] | ||||
|   local coords = utilities.get_coords(place, config) | ||||
|   if type(coords) == 'string' then utilities.answer_inline_query(self, inline_query) return end | ||||
|    | ||||
|   local results = '[{"type":"venue","id":"'..math.random(100000000000000000)..'","latitude":'..coords.lat..',"longitude":'..coords.lon..',"title":"Ort","address":"'..coords.addr..'"}]' | ||||
|  | ||||
|   utilities.answer_inline_query(self, inline_query, results, 10000) | ||||
| end | ||||
|  | ||||
| function gMaps:action(msg, config) | ||||
| 	local input = utilities.input(msg.text) | ||||
| 	if not input then | ||||
| 		if msg.reply_to_message and msg.reply_to_message.text then | ||||
| 			input = msg.reply_to_message.text | ||||
| 		else | ||||
| 			utilities.send_message(self, msg.chat.id, gMaps.doc, true, msg.message_id, true) | ||||
| 			return | ||||
| 		end | ||||
| 	end | ||||
|     utilities.send_typing(self, msg.chat.id, 'find_location') | ||||
| 	local coords = utilities.get_coords(input, config) | ||||
| 	if type(coords) == 'string' then | ||||
| 		utilities.send_reply(self, msg, coords) | ||||
| 		return | ||||
|   local input = utilities.input(msg.text) | ||||
|   if not input then | ||||
|     if msg.reply_to_message and msg.reply_to_message.text then | ||||
| 	  input = msg.reply_to_message.text | ||||
| 	else | ||||
| 	  utilities.send_message(self, msg.chat.id, gMaps.doc, true, msg.message_id, true) | ||||
| 	  return | ||||
| 	end | ||||
|   end | ||||
|  | ||||
|   utilities.send_typing(self, msg.chat.id, 'find_location') | ||||
|   local coords = utilities.get_coords(input, config) | ||||
|   if type(coords) == 'string' then | ||||
| 	utilities.send_reply(self, msg, coords) | ||||
| 	return | ||||
|   end | ||||
|  | ||||
|   utilities.send_location(self, msg.chat.id, coords.lat, coords.lon, msg.message_id) | ||||
|   utilities.send_photo(self, msg.chat.id, gMaps:get_staticmap(input, coords.lat, coords.lon), nil, msg.message_id) | ||||
|   | ||||
| @@ -5,6 +5,13 @@ gps.command = 'gps <Breitengrad>,<Längengrad>' | ||||
| function gps:init(config) | ||||
| 	gps.triggers = { | ||||
|     "^/gps ([^,]*)[,%s]([^,]*)$", | ||||
| 	"google.de/maps/@([^,]*)[,%s]([^,]*)", | ||||
| 	"google.com/maps/@([^,]*)[,%s]([^,]*)", | ||||
| 	"google.de/maps/place/@([^,]*)[,%s]([^,]*)", | ||||
| 	"google.com/maps/place/@([^,]*)[,%s]([^,]*)" | ||||
| 	} | ||||
| 	gps.inline_triggers = { | ||||
|     "^gps ([^,]*)[,%s]([^,]*)$", | ||||
| 	"google.de/maps/@([^,]*)[,%s]([^,]*)", | ||||
| 	"google.com/maps/@([^,]*)[,%s]([^,]*)", | ||||
| 	"google.de/maps/place/@([^,]*)[,%s]([^,]*)", | ||||
| @@ -14,6 +21,15 @@ function gps:init(config) | ||||
| ]]..config.cmd_pat..[[gps* _<Breitengrad>_,_<Längengrad>_: Sendet Karte mit diesen Koordinaten]] | ||||
| end | ||||
|  | ||||
| function gps:inline_callback(inline_query, config) | ||||
|   local lat = matches[1] | ||||
|   local lon = matches[2] | ||||
|    | ||||
|   local results = '[{"type":"location","id":"'..math.random(100000000000000000)..'","latitude":'..lat..',"longitude":'..lon..',"title":"Standort"}]' | ||||
|  | ||||
|   utilities.answer_inline_query(self, inline_query, results, 10000) | ||||
| end | ||||
|  | ||||
| function gps:action(msg, config, matches) | ||||
|   utilities.send_typing(self, msg.chat.id, 'upload_photo') | ||||
|   local lat = matches[1] | ||||
|   | ||||
| @@ -363,24 +363,22 @@ end | ||||
|  | ||||
|  -- Gets coordinates for a location. Used by gMaps.lua, time.lua, weather.lua. | ||||
| function utilities.get_coords(input, config) | ||||
|   local url = 'https://maps.googleapis.com/maps/api/geocode/json?address='..URL.escape(input)..'&language=de' | ||||
|   local jstr, res = https.request(url) | ||||
|   if res ~= 200 then | ||||
|     return config.errors.connection | ||||
|   end | ||||
|  | ||||
| 	local url = 'https://maps.googleapis.com/maps/api/geocode/json?address=' .. URL.escape(input) | ||||
|  | ||||
| 	local jstr, res = https.request(url) | ||||
| 	if res ~= 200 then | ||||
| 		return config.errors.connection | ||||
| 	end | ||||
|  | ||||
| 	local jdat = json.decode(jstr) | ||||
| 	if jdat.status == 'ZERO_RESULTS' then | ||||
| 		return config.errors.results | ||||
| 	end | ||||
|  | ||||
| 	return { | ||||
| 		lat = jdat.results[1].geometry.location.lat, | ||||
| 		lon = jdat.results[1].geometry.location.lng | ||||
| 	} | ||||
|   local jdat = json.decode(jstr) | ||||
|   if jdat.status == 'ZERO_RESULTS' then | ||||
|     return config.errors.results | ||||
|   end | ||||
|  | ||||
|   return { | ||||
| 	lat = jdat.results[1].geometry.location.lat, | ||||
| 	lon = jdat.results[1].geometry.location.lng, | ||||
| 	addr = jdat.results[1].formatted_address | ||||
|   } | ||||
| end | ||||
|  | ||||
|  -- Get the number of values in a key/value table. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Andreas Bielawski
					Andreas Bielawski