PyTelegramBotAPI NameError: name 'p' is not defined Python(Django)

Я пишу телеграм бот, используя pytelegrambotapi. Я создал базу данных с помощью Python (django). Следующий код описывает вычисление площади прямоугольника. Сначала я написал бота, используя глобальную переменную. У меня проблема! Если только один пользователь использует бота, бот отвечает правильно. Если бот используется многими пользователями одновременно, бот смешивает ответы и возвращает неверный ответ. Я хочу решить эту проблему с помощью базы данных. Но потом я отредактировал код и сделал его таким(BOT.PY), и у меня возникла проблема с локальной переменной. Не могу понять где ошибка. Пожалуйста помогите :(

BOT.PY

...
...;
float_pattern = r'^\d{1,7}\.\d{1,2}$'
...
...


def p_first(message):
    if message.text.isdigit() or re.match(float_pattern, message.text):
        chat_id = message.chat.id
        uid, _ = Profile.objects.get_or_create(
            external_id=message.chat.id,
            defaults={
                'name': message.chat.username

            }
        )
        Message(
            profile=uid,
            param1=message.text
        ).save()
        p = float(message.text)
        print('Parameter (p) from:', chat_id)
        bot.send_message(message.chat.id, "Ajoyib, perimetr qabul qilindi!")
        msg = bot.send_message(message.chat.id, "<b>2. "Now secondside: "</b>", parse_mode="html")
        bot.register_next_step_handler(msg, height)
        return p
    else:
        msg = bot.send_message(message.chat.id, "Nice!")
        bot.register_next_step_handler(msg, p_first)

def height(message):
    if message.text.isdigit() or re.match(float_pattern, message.text):
        chat_id = message.chat.id
        uid, _ = Profile.objects.get_or_create(
            external_id=message.chat.id,
            defaults={
                'name': message.chat.username
            }
        )
        Message(
            profile=uid,
            param2=message.text
        ).save()
        h = float(message.text)
        print('Parameter (h) from:', chat_id)
        bot.send_message(message.chat.id, "Nice!" +f'{(str(final_result())} + ' is answer'
       
    else:
        msg = bot.send_message(message.chat.id, "Only number")
        bot.register_next_step_handler(msg, height)
def final_result():
    result = float(p_first(p)*height(h))
    return result

NameError: name 'p' is not defined

Models.py

from django.db import models


class Profile(models.Model):
    external_id = models.PositiveIntegerField(
        verbose_name='User ID',
        unique=True,
    )
    name = models.TextField(
        verbose_name='User name',
        null=True,
    )

    def str(self):
        return f' ID: {self.external_id} | Username: {self.name}'

    class Meta:
        verbose_name = 'Profile'


class Message(models.Model):
    profile = models.ForeignKey(
        to='main.Profile',
        verbose_name='Profile',
        on_delete=models.PROTECT,
        null=True,
    )
    text = models.TextField(
        verbose_name='Text',
    )
    param1 = models.FloatField(
        verbose_name='P',
        default='0'
    )
    param2 = models.FloatField(
        verbose_name='H',
        default='0'
    )
Вернуться на верх