diff --git a/aiogram/types/base.py b/aiogram/types/base.py index 6869c5a4..03afcb53 100644 --- a/aiogram/types/base.py +++ b/aiogram/types/base.py @@ -183,15 +183,13 @@ class TelegramObject(metaclass=MetaTelegramObject): def __getitem__(self, item): if item in self.props: - return getattr(self, item) - elif item in self.values: - return self.values[item] + return self.props[item].get_value(self) + raise KeyError(item) def __setitem__(self, key, value): if key in self.props: - setattr(self, key, value) - else: - self.values[key] = value + return self.props[key].set_value(self, value, self.conf.get('parent', None)) + raise KeyError(key) def __contains__(self, item): self.clean() diff --git a/aiogram/types/fields.py b/aiogram/types/fields.py index 3559e8d3..5c974eec 100644 --- a/aiogram/types/fields.py +++ b/aiogram/types/fields.py @@ -71,7 +71,7 @@ class BaseField(metaclass=abc.ABCMeta): pass @abc.abstractmethod - def deserialize(self, value): + def deserialize(self, value, parent=None): """Deserialize python object value to TelegramObject value""" pass