我需要获取更新的用户位置。当我将实时位置发送给机器人时,我可以读取经度和纬度,但它们保持不变。我在地图上看到了位置的变化,但是该漫游器无法更新坐标。
当我发送实时位置信息时,功能getLocation
保存我的消息并显示坐标。
def getLocation(bot, update, user_data):
msg = update.message
user_data['msg'] = msg
user_data['id'] = update.update_id
update.message.reply_text('lat: {}, lng: {}'.format(
msg.location.latitude, msg.location.longitude))
然后,当我移动时,我想使用/track
命令知道我的实际坐标,但是它显示了旧坐标。
def showCoordinates(bot, update, user_data):
# I need to update location here but I don't know
newLoc = user_data['msg']
update.message.reply_text('lat: {}, lng: {}'.format(
newLoc.location.latitude, newLoc.location.longitude))
这是我的调度员
dp = updater.dispatcher
dp.add_handler(MessageHandler(Filters.location,
getLocation,
pass_user_data=True))
dp.add_handler(CommandHandler('track',
showCoordinates,
pass_user_data=True))
我尝试在函数Update(user_data['id'], edit_message=user_data['loc'])
中使用showCoordinates
,但是它对我不起作用。
答案 0 :(得分:0)
在getLocation
中,您将坐标存储在user_data['msg']
中,然后从包含先前坐标的旧newLoc
请求user_data['msg']
。
移动时应更新数据变量。就像您要签到一样。
否则,新的Telegram API支持现场位置。请参阅文档。