AttributeError: объект 'str' не имеет атрибута 'text' PyTelegramBotAPI

Я создавал бота, который измеряет размер прямоугольника, используя библиотеку pytelegrambotapi. Я создал базу данных, используя Python django. Цель: Когда бот используется несколькими пользователями, бот извлекает из базы данных параметры, введенные каждым пользователем, и возвращает им ответ. Но в моем коде наблюдается следующая ошибка: AttributeError: у объекта 'str' нет атрибута 'text'. Я не понимаю, где и почему происходит эта ошибка.

BOT.PY

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

    def perimeter(message):
        if re.match(int_pattern, message.text) or re.match(float_pattern, message.text):
# <- AttributeError: 'str' object has no attribute 'text' 
            p = float(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()
            print(p, type(p), 'Parameter (p) from:', chat_id)
            bot.send_message(message.chat.id, "Good")
            msg = bot.send_message(message.chat.id, "Enter height:")
            bot.register_next_step_handler(msg, height)
            return p
        else:
            msg = bot.send_message(message.chat.id, "Only number!")
            bot.register_next_step_handler(msg, perimeter)

    def height(message):
        if re.match(int_pattern, message.text) or re.match(float_pattern, message.text):
            h = float(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()
            print('Parameter (h) from:', chat_id)
            bot.send_message(message.chat.id, "Good!")
            msg = bot.send_message(message.chat.id, "The answer is f'{str(result())}'")
            return h
        else:
            msg = bot.send_message(Only number!)
            bot.register_next_step_handler(msg, height)



    def result():
        p = ''  # perimeter
        h = ''     # height
        final_result = perimeter(p) * height(h)
        return final_result    

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'
    )
Вернуться на верх