@Andrey1349

Пишу код для музыкального бота в тг, скажите, пожалуйста, почему может не работать конец этого кода?

import telebot
from telebot import types
from telebot.types import InlineKeyboardButton

bot = telebot.TeleBot('токен')

@bot.message_handler(commands=['start'])
def start(message):
   markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
   btn1 = types.KeyboardButton('audio')
   btn2 = types.KeyboardButton('list')
   markup.add(btn1,btn2)
   bot.send_message(message.chat.id, f'Привет, {message.from_user.first_name}. Выбери 
   следующее действие:', reply_markup=markup)

@bot.message_handler(content_types='text')
def list(message):
    if message.text == 'list':
        start_markup = types.InlineKeyboardMarkup()
        btn1 = telebot.types.InlineKeyboardButton(f'1 сценарий', callback_data='1')
        btn2 = telebot.types.InlineKeyboardButton(f'2 сценарий', callback_data='2')
        btn3 = telebot.types.InlineKeyboardButton(f'3 сценарий', callback_data='3')
        start_markup.row(btn1,btn2,btn3)
        bot.reply_to(message, 'Давай настроим твой плейлист', reply_markup=start_markup)

@bot.callback_query_handler(func=lambda call:True)
def handle_button_click(call):
    if call.data == '1':
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text='Давай настроим твой плейлист', reply_markup=None)

        firstlist_markup = types.InlineKeyboardMarkup()
        btnn1 = telebot.types.InlineKeyboardButton(f'Добавить еще', callback_data='4')
        firstlist_markup.row(btnn1)
        bot.send_message(call.message.chat.id, f'Послушай это:')
        bot.send_message(call.message.chat.id, f'мой текст', reply_markup=firstlist_markup)
@bot.callback_query_handler(func=lambda call: True)
def inside_button_click(call):
    if call.data == '4':
        bot.send_message(call.message.chat.id, f'мой текст')

bot.polling(none_stop=True)


Меня интересует именно ответ на кнопку с callback_data='4'. Он как раз таки и не отправляется. Может где-то ошибка?

P.S не судите строго. Я еще новичок. Многого не знаю и только начинаю разбираться.
  • Вопрос задан
  • 132 просмотра
Решения вопроса 1
febday
@febday
Обработчик:
@bot.callback_query_handler(func=lambda call: True)
def inside_button_click(call):

не будет работать, поскольку выше него стоит абсолютно такой же обработчик:
@bot.callback_query_handler(func=lambda call:True)
def handle_button_click(call):


Чтобы второй обработчик работал, нужно задавать иной фильтр. Например такой:
@bot.callback_query_handler(func=lambda call: call.data == '4')
def inside_button_click(call):
    bot.send_message(call.message.chat.id, f'мой текст')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы