diff --git a/discord/embeds.py b/discord/embeds.py index b35582b9f4ab..e2d83a826b73 100644 --- a/discord/embeds.py +++ b/discord/embeds.py @@ -56,6 +56,16 @@ def __eq__(self, other: object) -> bool: return isinstance(other, EmbedProxy) and self.__dict__ == other.__dict__ +class EmbedMediaProxy(EmbedProxy): + def __getattribute__(self, name: str) -> Any: + if name == 'flags': + try: + return AttachmentFlags._from_value(super().__getattribute__(name)) + except AttributeError: + return AttachmentFlags._from_value(0) + return super().__getattribute__(name) + + if TYPE_CHECKING: from typing_extensions import Self @@ -413,9 +423,7 @@ def image(self) -> _EmbedMediaProxy: If the attribute has no value then ``None`` is returned. """ # Lying to the type checker for better developer UX. - data = getattr(self, '_image', {}) - data['flags'] = AttachmentFlags._from_value(data.get('flags', 0)) - return EmbedProxy(data) # type: ignore + return EmbedMediaProxy(getattr(self, '_image', {})) # type: ignore def set_image(self, *, url: Optional[Any]) -> Self: """Sets the image for the embed content. @@ -458,9 +466,7 @@ def thumbnail(self) -> _EmbedMediaProxy: If the attribute has no value then ``None`` is returned. """ # Lying to the type checker for better developer UX. - data = getattr(self, '_thumbnail', {}) - data['flags'] = AttachmentFlags._from_value(data.get('flags', 0)) - return EmbedProxy(data) # type: ignore + return EmbedMediaProxy(getattr(self, '_thumbnail', {})) # type: ignore def set_thumbnail(self, *, url: Optional[Any]) -> Self: """Sets the thumbnail for the embed content. @@ -503,9 +509,7 @@ def video(self) -> _EmbedMediaProxy: If the attribute has no value then ``None`` is returned. """ # Lying to the type checker for better developer UX. - data = getattr(self, '_video', {}) - data['flags'] = AttachmentFlags._from_value(data.get('flags', 0)) - return EmbedProxy(data) # type: ignore + return EmbedMediaProxy(getattr(self, '_video', {})) # type: ignore @property def provider(self) -> _EmbedProviderProxy: