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'
)