如何在Python Telegram Bot中使用ChosenInlineResultHandler

时间:2017-09-14 20:31:57

标签: python python-3.x telegram telegram-bot python-telegram-bot

我尝试使用python-telegram-bot

我不明白如何正确处理InlineKeyboardButton。

def start(bot, update):

    currencies = [currency for currency in API().get_currencies()]    

    keyboard = [[InlineKeyboardButton("{}".format(c), callback_data='{}'.format(c))] for c in currencies]

    reply_markup = InlineKeyboardMarkup(keyboard)

    update.message.reply_text('Select the currency you want to exchange:', reply_markup=reply_markup)


updater.dispatcher.add_handler(CommandHandler('start', start))

现在,我需要在ChosenInlineResultHandler的帮助下将选择传递给另一个函数来处理选择,但我不明白如何做到这一点。

1 个答案:

答案 0 :(得分:0)

您正在使用内联按钮,而返回的查询只是CallbackQuery而不是InlineQuery,是的,Telegram Bot API的名称有点令人困惑。

您可以使用telegram.ext.CallbackQueryHandler在按下按钮时捕获查询。

def button_callback(bot, update):
    # data is the callback_data where you declared in the buttons
    query = update.callback_query.data
    if query == "something":
        # do something here

updater.dispatcher.add_handler(CallbackQueryHandler(button_callback))

这是如何抓住按钮的最小例子。数据。您可以查看here以获取完整示例。