【问题标题】:How do I answer only the latest user inline query with python-telegram-bot?如何使用 python-telegram-bot 仅回答最新的用户内联查询?
【发布时间】:2019-04-27 18:11:07
【问题描述】:

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

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

在所有这些查询中,只有最新的一个才是真正重要的。例如,如果我查询“Beach Voley”,机器人将收到以下连续查询:

  • 碧雅
  • 海滩
  • 海滩沃
  • 沙滩排球

当我输入时,暂停并继续输入。

然后,我的机器人在处理真正重要的查询之前滞后于处理不完整的查询,并且电报给我过时的无效 id 错误,以及真正重要的查询超时。

我想在收到查询后取消为该用户处理的具有较旧时间戳的任何其他内联查询,从而终止他们的线程或其他内容。

Telepot,我使用的另一个 python 电报机器人库,将其包含为 feature。根据我对源代码的理解,它在内部保留了一个正在运行的任务队列。

如何在 python-telegram-bot 中模仿这种行为?这是我没有找到的特征吗?

【问题讨论】:

  • 欢迎来到 StackOverflow!请在问题中包含您迄今为止的尝试
  • 好吧,我真的无法尝试编写它。我不明白 python-telegram-bot 如何处理当前正在进行的任务,而 Telepot 的应答器对我来说是黑魔法。我尝试搜索类似的问题并重新搜索 python-telegram-bot 文档和示例,但到目前为止我还没有成功。我考虑过添加代码 sn-p,但它与内联机器人的标准示例确实没有什么不同。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 2020-08-02
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    相关资源
    最近更新 更多