如何通过python获取电报机器人的实时位置?

时间:2018-01-13 09:10:54

标签: python location telegram-bot python-telegram-bot

我正在使用python-telegram-bot库。 我想跟踪用户的实时位置,但我不知道该怎么做。 我尝试使用作业队列:

def notification(bot, job):
  updates = bot.get_updates()
  print([u.message.location for u in updates])
# Add job to queue

job = job_queue.run_repeating(notification, 10, 1, context=chat_id)
chat_data['job'] = job

但更新无效。 我想每隔1分钟跟踪一次位置。

2 个答案:

答案 0 :(得分:2)

就对Seans进行阐述吧: 使用python-telegram-bot库,只需在处理程序中设置edited_updates=True,即可轻松完成此操作。每当位置更新时,都可以在update.edited_message中找到它。当然,只有在用户与漫游器手动共享实时位置的情况下,此方法才起作用。

def location(bot, update):
    message = None
    if update.edited_message:
        message = update.edited_message
    else:
        message = update.message
    current_pos = (message.location.latitude, message.location.longitude)

location_handler = MessageHandler(Filters.location, location, edited_updates=True)
dispatcher.add_handler(location_handler)

答案 1 :(得分:0)

您的更新应look like this

它只会包含.message.location中的第一个位置,最新位置为.edit_message.location,其他位置将会消失,因此您需要自己录制。