I’m having trouble with my Telegram bot. The inline keyboard buttons show up fine, but when users click them, the callback handlers don’t seem to work. I’ve set up the callback data correctly but the bot doesn’t respond to button clicks.
async def handle_callback(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
"""Handle inline keyboard button clicks"""
query = update.callback_query
await query.answer()
if query.data == 'menu1':
options = [
[InlineKeyboardButton("How do I earn points?", callback_data="info1")],
[InlineKeyboardButton("How to update my phone number?", callback_data="info2")],
[InlineKeyboardButton("Card not working at terminal?", callback_data="info3")],
[InlineKeyboardButton("Points not accumulating?", callback_data="info4")],
[InlineKeyboardButton("Lost or damaged card?", callback_data="info5")]
]
markup = InlineKeyboardMarkup(options)
await query.edit_message_text('FAQ Section:', reply_markup=markup)
if query.data == 'info1':
print(query.data)
back_btn = [[InlineKeyboardButton("Back to Menu", callback_data="home")]]
markup = InlineKeyboardMarkup(back_btn)
await query.edit_message_text('Points are earned with every purchase using your loyalty card. Each point equals 1 dollar discount when redeemed.', reply_markup=markup)
if query.data == 'info2':
print(query.data)
back_btn = [[InlineKeyboardButton("Back to Menu", callback_data="home")]]
markup = InlineKeyboardMarkup(back_btn)
await query.edit_message_text('Please contact our support team at 1-800-SUPPORT to update your phone number.', reply_markup=markup)
if query.data == 'menu2':
print('menu2 selected')
await query.edit_message_text('For all inquiries, please call our hotline at 1-800-HELP-NOW (toll-free)')
I expected the buttons for “How do I earn points?” and “How to update my phone number?” to trigger their respective handlers, but the code never enters the if query.data == 'info1': or if query.data == 'info2': blocks. Any help would be great!