如何根据用户选择在CallbackQueryHandler中调用函数?

问题描述

示例:

AGAIN = range(1)
TOKEN = 'token'


def start(update,context):
    keyboard = [
        [InlineKeyboardButton("again",callback_data='again')],[InlineKeyboardButton("stop",callback_data='stop')]
    ]
    reply_markup = InlineKeyboardMarkup(keyboard)

    update.message.reply_text(
            text="Hi!\n-----\nThat's it,again?",reply_markup=reply_markup)
    return AGAIN


def again(update,context):
    query = update.callback_query
    query.answer()

    if query.data == 'again':
        start()

    elif query.data == 'stop':
        cancel()


def cancel(update,context):
    update.message.reply_text(
        'Thank You,if you want open the menu,just type /start')
    return ConversationHandler.END


def main():
    updater = Updater(token=TOKEN,use_context=True)
    dispatcher = updater.dispatcher

    conv_handler = ConversationHandler(
        entry_points=[CommandHandler('start',start)],states={
            AGAIN: [CallbackQueryHandler(again)]
        },fallbacks=[CommandHandler('cancel',cancel)],)

    dispatcher.add_handler(conv_handler)

    updater.start_polling()
    updater.idle()


if __name__ == '__main__':
    main()

该怎么做?如果用户选择“再次”->运行start(),如果用户选择“停止”->运行cancel()。我尝试使用MessageHandler或CommandHandler添加新状态,但由于在。之后没有用户消息作为输入,因此无法正常工作。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)