Не работает вложенный условный оператор if в обработке кнопки telegram - бота

Всем привет. Делаю новостного бота для telegram. Захотел сделать так, чтобы при нажатии на кнопку выводилась одна случайная новость из rss-ленты. Вот код:

@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
    if call.data == 'yandex':
        ya_category = types.InlineKeyboardMarkup()
        key_auto = types.InlineKeyboardButton(text='Авто', callback_data='auto_ya')
        ya_category.add(key_auto)
        key_world = types.InlineKeyboardButton(text='В мире', callback_data='world_ya')
        ya_category.add(key_world)
        key_health = types.InlineKeyboardButton(text='Здоровье', callback_data='health_ya')
        ya_category.add(key_health)
        key_internet = types.InlineKeyboardButton(text='Интернет', callback_data='internet_ya')
        ya_category.add(key_internet)
        key_science = types.InlineKeyboardButton(text='Наука', callback_data='science_ya')
        ya_category.add(key_science)
        key_politics = types.InlineKeyboardButton(text='Политика', callback_data='politics_ya')
        ya_category.add(key_politics)
        key_tech = types.InlineKeyboardButton(text='Технологии', callback_data='tech_ya')
        ya_category.add(key_tech)
        key_eco = types.InlineKeyboardButton(text='Экономика', callback_data='eco_ya')
        ya_category.add(key_eco)
        bot.send_message(call.message.chat.id, text='Выберите категорию', reply_markup=ya_category)
    if call.data == 'auto_ya':
        NewsFeed = feedparser.parse('https://news.yandex.ru/auto.rss')
        entry = NewsFeed.entries[1]
        message_bot = (str(entry.title) + '\nСсылка: ' + str(entry.link))
        bot.send_message(call.message.chat.id, message_bot)
        bot.send_message(call.message.chat.id, text='Показать новость', reply_markup=news_keyb)
        if call.data == 'show_news':
            n = random.randint(2,20)
            NewsFeed = feedparser.parse('https://news.yandex.ru/auto.rss')
            entry = NewsFeed.entries[n]
            message_bot = (str(entry.title) + '\nСсылка: ' + str(entry.link))
            bot.send_message(call.message.chat.id, message_bot)

Не работает следующая часть кода:

if call.data == 'show_news':
        n = random.randint(2,20)
        NewsFeed = feedparser.parse('https://news.yandex.ru/auto.rss')
        entry = NewsFeed.entries[n]
        message_bot = (str(entry.title) + '\nСсылка: ' + str(entry.link))
        bot.send_message(call.message.chat.id, message_bot)

Т.е. самую первую новость он выводит после того, как пользователь выберет категорию, а вот если пользователь нажмёт на кнопку "Показать новость", которая осуществляет вывод случайной новости - ничего не произойдёт, ошибок не показывает. Объясните, пожалуйста, что я делаю не так. Заранее спасибо.


Ответы (1 шт):

Автор решения: Эникейщик

Этот блок находится внутри блока if call.data == 'auto_ya':. Очевидно, что он никогда не будет выполняться. Сдвиньте его влево.

→ Ссылка