Бот реагирует на инлайн кнопку, хотя не должен

Python, pyTelegremBotAPI. Пишу бота для текстовой рпг. При сражении игрок выбирает в какую часть монстра ударить с помощью инлайн кнопок. После того, как у монстра меньше 0 хп, игрок все равно может нажать на оставшиеся инлайн кнопки, и снова хп отнимется. Я думаю, мейби удалять эти кнопки, но был бы благодарен, если подскажете логику, почему так происходит

@bot.message_handler(func=lambda message: message.text == 'Охота')
def go_hunt(message):
    markup = types.InlineKeyboardMarkup()
    hit_head = types.InlineKeyboardButton('голова', callback_data='голова')
    hit_body = types.InlineKeyboardButton('тело', callback_data='тело')
    markup.add(hit_body, hit_head)
    bot.reply_to(message, 'Where to hit?', reply_markup=markup)


@bot.callback_query_handler(func=lambda call: True)
def fight(call):
    global my_heal_point, monster_heal_point, exp_global

    if call.data == 'голова':
        monster_heal_point -= 5
        bot.send_message(call.message.chat.id,
                         f"Ты ударил монстра в голову! У него осталось - {monster_heal_point} жизней")
    elif call.data == 'тело':
        monster_heal_point -= 4
        bot.send_message(call.message.chat.id,
                         f"Ты ударил монстра в тело! У него осталось - {monster_heal_point} жизней")

    if my_heal_point <= 0:
        bot.send_message(call.message.chat.id, 'Ты умер чмоха')
        return
    elif monster_heal_point <= 0:
        exp_global += 1
        bot.send_message(call.message.chat.id,
                         f'Монстр погиб, ваш опыт {exp_global}')
        return
    else:
        markup = types.InlineKeyboardMarkup()
        hit_head = types.InlineKeyboardButton('голова', callback_data='голова')
        hit_body = types.InlineKeyboardButton('тело', callback_data='тело')
        markup.add(hit_body, hit_head)
        bot.send_message(call.message.chat.id,
                         'Куда ударить?', reply_markup=markup)

введите сюда описание изображения


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

Автор решения: AnnaBazueva

Просто добавьте проверку в функцию fight:

@bot.callback_query_handler(func=lambda call: True)
def fight(call):
    global my_heal_point, monster_heal_point, exp_global

    # Если монстр мертв, игнорируем нажатия на кнопки
    if monster_heal_point <= 0:
        bot.send_message(call.message.chat.id, 'Монстр уже мертв. Вы не можете его атаковать.')
        return 1

    # Next, the code for processing single messages 
→ Ссылка