如何使用python-telegram-bot仅回答最新的用户内联查询?

时间:2018-11-26 05:45:57

标签: python-3.x telegram python-telegram-bot

我正在使用python-telegram-bot来构建一个机器人来回答内联查询。查询结果处理起来很复杂。我正在使用@run_async

当用户键入一个内联查询时,客户端会生成几个查询,每个查询都会在我的机器人上生成一个处理程序,这需要花费一些时间来处理。

在所有这些查询中,实际上只有最新的才是重要的。例如,如果我查询“ Beach Voley”,则该漫游器将连续收到以下查询:

  • Bea
  • 海滩
  • Beach Vo
  • 沙滩Voley

输入时,请暂停并继续输入。

然后,我的机器人在处理真正重要的查询之前会先处理不完整的查询,电报会为我提供过期ID的无效id错误,并为真正重要的查询提供超时。

我想在收到查询后取消为该用户使用较旧时间戳记的任何其他内联查询,从而杀死其线程或其他东西。

Telepot,我使用的另一个用于python的电报bot库,将其包括为feature。据我对源代码的了解,它在内部将正在运行的任务保持在队列中。

如何在python-telegram-bot中模仿这种行为?我只是找不到这种功能吗?

1 个答案:

答案 0 :(得分:0)

您可以在每次覆盖值时在处理程序中将查询设置为context.user_data['query']。最后,当您需要使用它时-您将拥有最后一个。