在python-telegram-bot中从用户获取实时位置

时间:2018-06-23 02:59:54

标签: python 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))

我尝试在函数Update(user_data['id'], edit_message=user_data['loc'])中使用showCoordinates,但是它对我不起作用。

1 个答案:

答案 0 :(得分:0)

getLocation中,您将坐标存储在user_data['msg']中,然后从包含先前坐标的旧newLoc请求user_data['msg']
移动时应更新数据变量。就像您要签到一样。 否则,新的Telegram API支持现场位置。请参阅文档。