In the first function, everything works correctly, but in the second function, after sending a message with buttons, nothing happens further. The buttons do not send the callback data.
def get_announcement(message):
announcement = message.text
if not announcement:
bot.send_message(chat_id=message.chat.id, text="You have sent an empty message. Sending an announcement has been aborted because you cannot send an empty message.")
return
markup = types.InlineKeyboardMarkup(row_width=2)
item1 = types.InlineKeyboardButton("๐ Attach photo", callback_data='attach_photo')
item2 = types.InlineKeyboardButton("โก๏ธ Skip", callback_data='skip')
markup.add(item1, item2)
bot.send_message(chat_id=message.chat.id, text="Do you want to attach a photo?", reply_markup=markup)
@bot.callback_query_handler(func=lambda call: True)
def handle_callback(call):
if call.data == "attach_photo":
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text="Send the photo you want to attach.", reply_markup=None)
bot.register_next_step_handler(message, lambda message: get_photo(message, announcement))
elif call.data == "skip":
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text="Announcement will be sent without a photo.", reply_markup=None)
photo=None
get_notification_preference(message, announcement, photo)
def get_notification_preference(message, announcement, photo):
markup = types.InlineKeyboardMarkup(row_width=2)
item1 = types.InlineKeyboardButton("๐ Sand with notification", callback_data="notification_on")
item2 = types.InlineKeyboardButton("๐ Send silently", callback_data="notification_off")
markup.add(item1, item2)
bot.send_message(chat_id=message.chat.id, text="How to send an announcement?", reply_markup=markup)
@bot.callback_query_handler(func=lambda call: True)
def handle_callback(call):
if call.data == "notification_on":
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text="Announcement will be sent with notification", reply_markup=None)
notification = True
send_announcement(message, announcement, photo, notification)
elif call.data == "notification_off":
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text="ะnnouncement will be sent silently.", reply_markup=None)
notification = False
send_announcement(message, announcement, photo, notification)
I've tried swapping functions, putting code in another function, changing variables, etc.
The code should set the value of the notification variable depending on which button the user presses.
The issue is that you are defining the callback query handlers inside the functions get_announcement and get_notification_preference. You need to define it globally.