问题描述
我正在抓取电报,我可以在聊天中使用 client.iter_messages 获取每个消息实例,但如果消息实例是位置共享消息,我想获取位置的纬度和经度。
WITH data AS (
SELECT a.*,CAST(ST_distanceSpheroid(geometry(location),st_geomfromtext('POINT(' || $7::decimal || ' ' || $8::decimal || ')',4326))as numeric) / 1000 AS distance
FROM agent AS a
WHERE (a.agent_code ILIKE $1
OR a.name ILIKE $1
OR a.phone LIKE $1)
AND
a.sub_district_name LIKE ANY(string_to_array($4,','))
AND
a.agent_status_id LIKE ANY(string_to_array($5,'))
AND CASE WHEN $6 = 'FAVORITE' THEN
a.is_subscription = true
WHEN $6 = 'REGULER' THEN
a.is_subscription != true
ELSE
a.location LIKE '%%'
END
ORDER BY distance ASC
),data_counter AS (
SELECT COUNT(agent_id) AS __total__
FROM data
)
SELECT *
FROM data,data_counter
LIMIT $2
OFFSET $3
`
如果有一点帮助,我们将不胜感激, 谢谢。
解决方法
仅当消息是位置共享消息 (message.geo
) 时才执行,否则不需要
location = message.geo #returns a GeoPoint class if the message is a location share message else returns None
if location is not None:
longitude = location.long
latitude = location.lat
print(longitude,latitude)