我的代码中有一个非常简单的message_handler东西,我希望以此方式工作:
如果用户说“是”,则机器人会要求输入名字,然后再输入名字。但是,我不问名字和名字。但是,我的输出将是:
名字:是
我该如何解决?
@bot.message_handler(content_types=['text'])
def handle_text(message):
if message.text == 'YES':
bot.send_message(message.from_user.id, "Your first Name")
FirstName = message.text
bot.send_message(message.from_user.id, "Your second Name")
SecondName = message.text
bot.send_message(message.from_user.id, "First Name: " + str(FirstName) + " Second Name: " + str(SecondName))
答案 0 :(得分:0)
尝试使用FSM。一些库(例如aiogram)具有内置工具和examples的用法。
但是,如果您的库没有FSM,则可以制作自己的简单状态机。只需将用户步骤保存到字典中即可。
states = {} # key - user_id, value - state
def abstract_handler(...):
if not states.get(user_id):
# ask user about his first name here
states[user_id] = 'first name'
return
if states.get(user_id) == 'first name':
first_name = message.text
# ask about second name here
states[user_id] = 'second name'
return
if states.get(user_id) == 'second name':
second_name = message.text
# etc
P.S .:这只是过程的简单说明。您可以将此代码拆分为多个处理程序。并且不要忘记保存用户数据。
P.P.S:请勿使用CamelCase调用变量:)