Не работает вложенный условный оператор 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':. Очевидно, что он никогда не будет выполняться. Сдвиньте его влево.