Aiogram не ждет ответ от пользователя, а выполняет всю функ. сразу

Пытаюсь в ботоводство и делаю бота с боевкой. Конечно, пока она выглядит максимально условно, но все же. Возник вопрос при создании самой функции сражения. Она просто не хочет ждать сообщение пользователя, а выводит все, как есть.

Код сражения

@rtr.message(Command('fight'))
async def fight_command(message: Message):
    global in_battle

    in_battle = True
    await message.reply(f"Ты начал бой с {rand_enemy.name}! У него {rand_enemy.hp} здоровья.")
    await fight_loop(message.chat.id)


async def fight_loop(chat_id):
    global in_battle

    while in_battle:
        # Ход пользователя
        bot.send_message(chat_id,'Твой ход! Напиши "атаковать"')
        if (F.text == 'атаковать'):
            rand_enemy.hp -= per.damage
            await bot.send_message(chat_id, 'Вы атаковали!')
            await bot.send_message(chat_id, f'''Ты нанес {per.damage} урона! У {rand_enemy.name} 
осталось {max(0, rand_enemy.hp)} здоровья.''')
            if rand_enemy.hp <= 0:
                await bot.send_message(chat_id, f"Ты победил {rand_enemy.name}!")
                in_battle = False
                break
            per.hp -= rand_enemy.damage
            await bot.send_message(chat_id, f'''{rand_enemy.name} нанес тебе {rand_enemy.damage} урона! 
У тебя осталось {max(0, per.hp)} здоровья.''')
            if per.hp <= 0:
                await bot.send_message(chat_id, f"Ты проиграл бой!")
                in_battle = False
                break

Код перса и мобов (если надо)

import random

class person():
    hp = 100
    damage = 10


class enemies():
    def __init__(self, hp, damage, name):
        self.hp = hp
        self.damage = damage
        self.name = name


rat = enemies(20, 5, 'Крыса')
goblin = enemies(50, 15, 'Гоблин')

per = person
list = [rat, goblin]
rand_enemy = random.choice(list)

И вот, что выводит бот:

Фотка


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