微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何根据用户选择在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 举报,一经查实,本站将立刻删除。