Функция не завершается 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)