From b0f2fe3ed496fba6645a0e9c2931282e9c72b937 Mon Sep 17 00:00:00 2001 From: Andrew <11490628+andrew000@users.noreply.github.com> Date: Sun, 21 Mar 2021 09:37:00 +0200 Subject: [PATCH] FIX TelegramObject.__setitem__ (#532) * FIX TelegramObject.__setitem__ Removed 'raise KeyError(key)' * Add warning and log in TelegramObject.__setitem__ When Telegram adds a new field -> Aiogram will warn about this. * Removed warnings.warn * Set logger to 'aiogram' * Removed 'f' before string --- aiogram/types/base.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/aiogram/types/base.py b/aiogram/types/base.py index 373f47be..0ed8579c 100644 --- a/aiogram/types/base.py +++ b/aiogram/types/base.py @@ -1,6 +1,7 @@ from __future__ import annotations import io +import logging import typing from typing import TypeVar @@ -26,6 +27,9 @@ Float = TypeVar('Float', bound=float) Boolean = TypeVar('Boolean', bound=bool) T = TypeVar('T') +# Main aiogram logger +log = logging.getLogger('aiogram') + class MetaTelegramObject(type): """ @@ -225,7 +229,9 @@ class TelegramObject(ContextInstanceMixin, metaclass=MetaTelegramObject): if key in self.props: return self.props[key].set_value(self, value, self.conf.get('parent', None)) self.values[key] = value - raise KeyError(key) + + # Log warning when Telegram silently adds new Fields + log.warning("Field '%s' doesn't exist in %s", key, self.__class__) def __contains__(self, item: str) -> bool: """