我需要获取更新的用户位置。当我将实时位置发送到机器人时,我可以读取纬度和经度,但它们保持不变。我在地图上看到我的位置如何变化,但机器人无法更新坐标。
当我发送实时位置时,功能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))
我尝试在函数showCoordinates
中使用Update(user_data['id'], edit_message=user_data['loc'])
,但它对我不起作用。
getLocation
中,您将坐标存储在user_data['msg']
中,然后从包含先前坐标的旧user_data['msg']
请求newLoc
。
移动时应更新数据变量。这就像你的情况下办理登机手续一样。 否则,新的电报 API a 支持实时位置。请参阅文档。