Skip to content

Commit 5813f19

Browse files
authored
fix file component patching
1 parent 4392105 commit 5813f19

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

discord/components.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -670,18 +670,30 @@ class UnfurledMediaItem(AssetMixin):
670670
def __init__(self, url: str):
671671
self._state = None
672672
self._url: str = url
673+
self._static_url: str | None = url if url and url.startswith("attachment://") else None
673674
self.proxy_url: str | None = None
674675
self.height: int | None = None
675676
self.width: int | None = None
676677
self.content_type: str | None = None
677678
self.flags: AttachmentFlags | None = None
678679
self.attachment_id: int | None = None
679680

681+
def __repr__(self) -> str:
682+
return f"<UnfurledMediaItem url={self.url!r} attachment_id={self.attachment_id}>"
683+
684+
def __str__(self) -> str:
685+
return self.url or self.__repr__()
686+
680687
@property
681688
def url(self) -> str:
682689
"""Returns this media item's url."""
683690
return self._url
684691

692+
@url.setter
693+
def url(self, value: str) -> None:
694+
self._url = value
695+
self._static_url = value if value and value.startswith("attachment://") else None
696+
685697
@classmethod
686698
def from_dict(cls, data: UnfurledMediaItemPayload, state=None) -> UnfurledMediaItem:
687699

@@ -696,7 +708,7 @@ def from_dict(cls, data: UnfurledMediaItemPayload, state=None) -> UnfurledMediaI
696708
return r
697709

698710
def to_dict(self) -> dict[str, str]:
699-
return {"url": self.url}
711+
return {"url": self._static_url or self.url}
700712

701713

702714
class Thumbnail(Component):

discord/ui/file.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@ def size(self) -> int:
9090
"""The size of this file in bytes, if provided by Discord."""
9191
return self._underlying.size
9292

93+
def refresh_component(self, component: Component) -> None:
94+
original = self._underlying.file
95+
component.file._static_url = original._static_url
96+
self._underlying = component
97+
9398
def to_component_dict(self) -> FileComponentPayload:
9499
return self._underlying.to_dict()
95100

0 commit comments

Comments
 (0)