Циклится отображение инлайн кнопок, как этого избежать?

python, telebot Всем привет! Решил по преколу попробовать сделать текстовую мморпг) Сейчас пытаюсь сделать сражение с монстром, чтобы перед каждой атакой у игрока спрашивали, в какую часть тела он хочет ударить, и он отвечал посредством нажатия на инлайн кнопок в чате. К сожалению, у меня почему то при запуске бесконечно отправляются сообщения о выборе места, куда игрок может ударить. Я понимаю почему это происходит, но не могу понять каким образом это исправить, так как опыта нет вообще. К сожалению break прописать не удается, так как получается, что он у меня будет находится не в цикле, а в другой функции внутри основной функции) Надеюсь я нормально объяснил. Буду очень благодарен, если подскажете как это исправить

@bot.message_handler(func=lambda message: message.text == 'Охота')
def hunting(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    go_fight = types.KeyboardButton('Начать поиски')
    back_menu = types.KeyboardButton('Назад')
    markup.add(go_fight, back_menu)
    bot.send_message(
        message.chat.id,
        "Вы можете начать поиски монстров",
        reply_markup=markup
    )


@bot.message_handler(func=lambda message: message.text == 'Начать поиски')
def lets_fight(message):
    hp_player = hp_global
    hp_monster = 10
    global xp_global
    while hp_player > 0 and hp_monster > 0:
        markup = types.InlineKeyboardMarkup()
        hit_head = types.InlineKeyboardButton('Голова', callback_data='head')
        hit_body = types.InlineKeyboardButton('Тело', callback_data='body')
        hit_legs = types.InlineKeyboardButton('Ноги', callback_data='legs')
        markup.add(hit_head, hit_body, hit_legs)
        bot.send_message(
            message.chat.id,
            "Куда вы хотите ударить?",
            reply_markup=markup
        )

        @bot.callback_query_handler(func=lambda call: True)
        def hit_handler(call):
            if call.data == 'head':
                damage_to_monster = random.randint(4, 5)
                hp_monster -= damage_to_monster
                if hp_monster <= 0:
                    xp_global += 1
                    bot.send_message(
                        message.chat.id, "Монстр мертв"
                    )
                damage_to_player = random.randint(1, 3)
                hp_player -= damage_to_player
                if hp_player <= 0:
                    bot.send_message(
                        message.chat.id, "Вы погибли"
                    )
            if call.data == 'body':
                damage_to_monster = random.randint(2, 3)
                hp_monster -= damage_to_monster
                if hp_monster <= 0:
                    xp_global += 1
                    bot.send_message(
                        message.chat.id, "Монстр мертв"
                    )
                damage_to_player = random.randint(1, 3)
                hp_player -= damage_to_player
                if hp_player <= 0:
                    bot.send_message(
                        message.chat.id, "Вы погибли"
                    )
            if call.data == 'legs':
                damage_to_monster = random.randint(0, 1)
                hp_monster -= damage_to_monster
                if hp_monster <= 0:
                    xp_global += 1
                    bot.send_message(
                        message.chat.id, "Монстр мертв"
                    )
                damage_to_player = random.randint(1, 3)
                hp_player -= damage_to_player
                if hp_player <= 0:
                    bot.send_message(
                        message.chat.id, "Вы погибли"
                    )
            bot.send_message(
                message.chat.id, f"Вы ударили монстра на {damage_to_monster} единиц здоровья. Здоровье монстра: {hp_monster}.")
            bot.send_message(
                message.chat.id, f"Монстр ударил вас на {damage_to_player} единиц здоровья. Ваше здоровье: {hp_player}.")
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    back_menu = types.KeyboardButton('Назад')
    go_fight = types.KeyboardButton('Начать поиски')
    markup.add(back_menu, go_fight)
    bot.send_message(
        message.chat.id,
        "Вы можете начать поиски монстров",
        reply_markup=markup
    )


bot.polling()

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