Функция не завершается python

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

from aiogram import Bot, Dispatcher, executor, types

bot = Bot(token='TOKEN')
dp = Dispatcher(bot)

async def on_startup(_):
    print('Bot online')

@dp.message_handler(commands=['start']) 
async def start_cmd(message: types.Message): 
    await message.reply("Привет! Я бот для решения квадратных уравнений или поиска площади окружности. \nДля продолжения, нажмите /help")
    
@dp.message_handler(commands=['help']) 
async def help_cmd(message: types.Message): 
    await message.reply("Чтобы решить квадратное уравнение, напишите /quadratic \nЧтобы узнать площадь окружности, напишите /circle")    
    
@dp.message_handler(commands=['quadratic']) 
async def solve_equation(message: types.Message):
    await message.reply("Введите коэффициенты A, B и C, разделяя их пробелом:")
    @dp.message_handler() 
    async def get_equation(message: types.Message):
        coefficients = message.text.split(' ')
        try:
            a = float(coefficients[0])
            b = float(coefficients[1])
            c = float(coefficients[2])
            d = b**2 - 4*a*c
            if d > 0:
                x1 = (-b + d**0.5) / (2*a)
                x2 = (-b - d**0.5) / (2*a)
                await message.answer(f"Дискриминант равен {d}. Корни уравнения: x1 = {x1}, x2 = {x2}")
            elif d == 0:
                x = -b / (2*a)
                await message.answer(f"Дискриминант равен {d}. Уравнение имеет единственный корень: x = {x}")
            else:
                await message.answer("Дискриминант меньше 0, уравнение не имеет решений.")
        except ValueError:
            await message.answer("Вы ввели некорректные данные! Попробуйте ещё раз.")
            
@dp.message_handler(commands=['circle']) 
async def circle_cmd(message: types.Message): 
    await message.reply("Введите радиус R:")  
    @dp.message_handler() 
    async def get_radius(message: types.Message):  
        r = float(message.text)
        area = 3.14 * r**2
        await message.reply('S = {}'.format(area))  
        await message.reply('Для повторного запуска, нажмите /circle')

executor.start_polling(dp, skip_updates=True, on_startup=on_startup)

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