首页 > 解决方案 > 如何在电报机器人api中的一个命令中获取多个输入?

问题描述

例如, bot 有 command /set_coordinates。它接受纬度和经度,如下所示:

问题是机器人每条消息只接收一个坐标,并且要了解它需要请求纬度或经度,它应该记住以前的消息。例如:

latitude_was_set = False
latitude, longitude = 0, 0

def set_coordinates_handler(update: Update, context: Context):
    received_text = update.message.text
     
    # First coordinate
    if not self.latitude_was_set:
       latitude = float(received_text)
       self.latitude_was_set = True
    else:
       longitude = float(received_text)

这是简化的功能,没有打印和其他东西来证明我需要flag latitude_was_self。问题是我应该将所有内容存储在数据库中,因为两个用户可以有不同latitude_was_set的变量,并且 python 中的变量不适合它。似乎不恰当地使用数据库在那里存储标志。如果我需要在一个命令中获取更多数据,这个问题会变得更大。除了使用数据库作为标志存储之外,还有其他选择吗?

这个问题可能很愚蠢,但这是我的第一个机器人 :)

标签: python-telegram-bot

解决方案


PTB 为此类用例提供了两种有用的机制:


免责声明:我目前是python-telegram-bot


推荐阅读