问题不同于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。你会怎么做?