fix matrix-media-repo
This commit is contained in:
parent
bf50243c3b
commit
8dfbebf53c
2 changed files with 74 additions and 1 deletions
|
@ -1,4 +1,4 @@
|
|||
{inputs, ...} @ args: let
|
||||
{pkgs, inputs, ...} @ args: let
|
||||
inherit ((pkgs.callPackage "${inputs.gomod2nix}/builder" {})) buildGoApplication;
|
||||
in {
|
||||
matrix-media-repo = buildGoApplication rec {
|
||||
|
|
73
matrix/mautrix-telegram-sticker.patch
Normal file
73
matrix/mautrix-telegram-sticker.patch
Normal file
|
@ -0,0 +1,73 @@
|
|||
diff --git a/mautrix_telegram/portal.py b/mautrix_telegram/portal.py
|
||||
index 3b6a81e..0f5aed4 100644
|
||||
--- a/mautrix_telegram/portal.py
|
||||
+++ b/mautrix_telegram/portal.py
|
||||
@@ -1626,6 +1626,35 @@ class Portal(DBPortal, BasePortal):
|
||||
msgtype=content.msgtype,
|
||||
)
|
||||
|
||||
+ async def _find_telegram_sticker(
|
||||
+ self,
|
||||
+ client,
|
||||
+ metadata
|
||||
+ ):
|
||||
+ sticker_set_id = metadata["pack"]["id"]
|
||||
+ from telethon.tl.functions.messages import GetAllStickersRequest
|
||||
+ sticker_sets = await client(GetAllStickersRequest(0))
|
||||
+ from telethon.tl.functions.messages import GetStickerSetRequest
|
||||
+ from telethon.tl.types import InputStickerSetID
|
||||
+ found_sticker_set = None
|
||||
+ for sticker_set in sticker_sets.sets:
|
||||
+ if sticker_set.set.id == sticker_set_id:
|
||||
+ found_sticker_set = sticker_set
|
||||
+ break
|
||||
+ if not found_sticker_set:
|
||||
+ return None
|
||||
+
|
||||
+ stickers = await client(GetStickerSetRequest(
|
||||
+ stickerset=InputStickerSetID(
|
||||
+ id=found_sticker_set.id, access_hash=found_sticker_set.access_hash
|
||||
+ )
|
||||
+ ))
|
||||
+
|
||||
+ for sticker in stickers.documents:
|
||||
+ if sticker.file_id == metadata["id"]:
|
||||
+ return sticker
|
||||
+
|
||||
+
|
||||
async def _handle_matrix_file(
|
||||
self,
|
||||
sender: u.User,
|
||||
@@ -1646,6 +1675,7 @@ class Portal(DBPortal, BasePortal):
|
||||
w = h = None
|
||||
max_image_size = self.config["bridge.image_as_file_size"] * 1000**2
|
||||
max_image_pixels = self.config["bridge.image_as_file_pixels"]
|
||||
+ media = None
|
||||
|
||||
if self.config["bridge.parallel_file_transfer"] and content.url:
|
||||
file_handle, file_size = await util.parallel_transfer_to_telegram(
|
||||
@@ -1666,7 +1696,14 @@ class Portal(DBPortal, BasePortal):
|
||||
file = await self.main_intent.download_media(content.url)
|
||||
|
||||
if content.msgtype == MessageType.STICKER:
|
||||
- if mime != "image/gif":
|
||||
+ tg_sticker = None
|
||||
+
|
||||
+ if "net.maunium.telegram.sticker" in content.info:
|
||||
+ tg_sticker = await self._find_telegram_sticker(client, content.info["net.maunium.telegram.sticker"])
|
||||
+
|
||||
+ if tg_sticker is not None:
|
||||
+ media = tg_sticker
|
||||
+ elif mime != "image/gif":
|
||||
mime, file, w, h = util.convert_image(
|
||||
file, source_mime=mime, target_type="webp"
|
||||
)
|
||||
@@ -1708,6 +1745,8 @@ class Portal(DBPortal, BasePortal):
|
||||
if "fi.mau.telegram.force_document" in content:
|
||||
force_document = bool(content["fi.mau.telegram.force_document"])
|
||||
|
||||
+ if media is not None:
|
||||
+ pass
|
||||
if (mime == "image/png" or mime == "image/jpeg") and not force_document:
|
||||
media = InputMediaUploadedPhoto(file_handle)
|
||||
else:
|
Reference in a new issue