feat: web UI chat render, panels, presence + analytics
This commit is contained in:
@@ -20,11 +20,20 @@ _MEDIA_ATTRS = (
|
||||
)
|
||||
|
||||
|
||||
_WEB_PAGE_ATTRS = ("photo", "video", "animation", "document", "audio")
|
||||
|
||||
|
||||
def media_object(message: Message) -> tuple[str | None, Any]:
|
||||
for attr in _MEDIA_ATTRS:
|
||||
obj = getattr(message, attr, None)
|
||||
if obj is not None:
|
||||
return attr, obj
|
||||
web_page = getattr(message, "web_page", None)
|
||||
if web_page is not None:
|
||||
for attr in _WEB_PAGE_ATTRS:
|
||||
obj = getattr(web_page, attr, None)
|
||||
if obj is not None:
|
||||
return attr, obj
|
||||
return None, None
|
||||
|
||||
|
||||
@@ -70,7 +79,8 @@ async def capture_media( # noqa: PLR0913
|
||||
file_size = existing["file_size"]
|
||||
downloaded = True
|
||||
else:
|
||||
buffer = await client.download_media(message, in_memory=True)
|
||||
target = message if getattr(message, kind or "", None) is obj else obj
|
||||
buffer = await client.download_media(target, in_memory=True)
|
||||
if isinstance(buffer, BytesIO):
|
||||
data = buffer.getvalue()
|
||||
storage_key = ctx.storage.put(data)
|
||||
|
||||
Reference in New Issue
Block a user