PyTelegramBotApi - 如果其他功能正在运行,如何停止一个功能?

问题描述

我正在尝试做一个可选的输入,并有这个代码

 bot.send_chat_action(message.from_user.id,'typing')
 markup = types.InlineKeyboardMarkup()
 markup.add(types.InlineKeyboardButton("Лечу только в одну сторону",callback_data="one_way"))
 msg = bot.send_message(message.from_user.id,'✅Хорошо. Теперь введите дату возвращения:',reply_markup=markup)
 bot.register_next_step_handler(msg,get_return_date)

代码用户发送带有按钮的消息以跳过此步骤,并注册等待日期值的函数 get_return_date()。 Message 如果用户单击按钮,查询处理程序会注册一个函数 get_adults(),该函数等待数值:

@bot.callback_query_handler(func=lambda call: call.data == "one_way")
def is_one_way(call):
    msg = bot.send_message(call.from_user.id,'✅Хорошо. Сколько взрослых (пассажиров старше 12-ти лет на момент полёта) полетят ??‍??')
    bot.register_next_step_handler(msg,get_adults)
    return

而且,麻烦在于 - 如果用户单击按钮跳过,get_return_date() 和 get_adults() 都在等待一个值并同时工作: Problem

有什么想法我该怎么做?

解决方法

你可以这样做:

bot.send_chat_action(message.from_user.id,'typing')
 msg = bot.send_message(message.from_user.id,'✅Хорошо. Теперь введите дату возвращения: (you can skip this passage with /skip)')
 bot.register_next_step_handler(msg,get_return_date)

def get_retourn_date(message):
    if message.text == '/skip':
        get_adults()
        return
    # write here the actual function code

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...