从python-telegram-bot中的用户那里获取实时位置



我需要获取更新的用户位置。当我将实时位置发送到机器人时,我可以读取纬度和经度,但它们保持不变。我在地图上看到我的位置如何变化,但机器人无法更新坐标。

当我发送实时位置时,功能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 支持实时位置。请参阅文档。

最新更新