在python-telegram-bot中创建两个独立的CallbackQueryHandler

问题描述 投票:0回答:0

问题不同于Multiple callback query handlers?

我希望我的机器人能够独立处理两个返回键盘的

CommandHandler
。因此,例如,在
main
中,这看起来像这样:

from telegram import ...
from telegram.ext import ...


async def select_date(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    ... # More computation
    keyboard = []
    for i, button in enumerate(week_ranges):
        keyboard.append([InlineKeyboardButton(button, callback_data=i)])
    reply_markup = InlineKeyboardMarkup(keyboard)
    await update.message.reply_text('Select Date:', reply_markup=reply_markup)

async def select_date_button(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    query = update.callback_query
    await query.answer()
    await query.edit_message_text(text=f"Selected option: {query.data}")
    ... # More computation


async def select_color(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    ... # More computation
    keyboard = []
    for i, button in enumerate(colors):
        keyboard.append([InlineKeyboardButton(button, callback_data=i)])
    reply_markup = InlineKeyboardMarkup(keyboard)
    await update.message.reply_text('Select Color:', reply_markup=reply_markup)

async def select_color_button(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    query = update.callback_query
    await query.answer()
    await query.edit_message_text(text=f"Selected option: {query.data}")
    ... # More computation


def main() -> None:
    application = Application.builder().token(os.environ["TOKEN"]).build()
    application.add_handler(CommandHandler("start", start))
    
    application.add_handler(CommandHandler("date_select", select_date))
    application.add_handler(CallbackQueryHandler(select_date_button))

    application.add_handler(CommandHandler("color_select", select_color))
    application.add_handler(CallbackQueryHandler(select_color_button))

if __name__ == "__main__":
    main()

但是没有办法选择正确的CallbackQueryHandler,只有第一个定义的获取handle。你会怎么做?

python python-telegram-bot
© www.soinside.com 2019 - 2024. All rights reserved.