Commit b12de29

benny-dou <60535774+benny-dou@users.noreply.github.com>
2025-01-23 05:21:49
feat(bridge): copy media group
1 parent fa87765
Changed files (1)
src
bridge
src/bridge/social.py
@@ -70,12 +70,22 @@ async def forward_social_media_results(client: Client, message: Message):
     async def forward_message(client: Client, message: Message, params: dict):
         """Forward the message to the target chat and delete the pending cache."""
         logger.info(f"Forwarding chat=@{message.from_user.username}, id={message.id} -> chat={params['target_cid']}, id={params['target_mid']}")
-        await client.copy_message(
-            chat_id=params["target_cid"],
-            from_chat_id=message.chat.id,
-            message_id=message.id,
-            reply_parameters=ReplyParameters(message_id=params["target_mid"]),  # type: ignore
-        )
+        if message.media_group_id and not cache.get(f"bridge-{params['url']}-{message.media_group_id}"):
+            # send media_group only once
+            cache.set(f"bridge-{params['url']}-{message.media_group_id}", "1", ttl=120)
+            await client.copy_media_group(
+                chat_id=params["target_cid"],
+                from_chat_id=message.chat.id,
+                message_id=message.id,
+                reply_parameters=ReplyParameters(message_id=params["target_mid"]),  # type: ignore
+            )
+        elif not cache.get(f"bridge-{params['url']}"):
+            await client.copy_message(
+                chat_id=params["target_cid"],
+                from_chat_id=message.chat.id,
+                message_id=message.id,
+                reply_parameters=ReplyParameters(message_id=params["target_mid"]),  # type: ignore
+            )
         cache.delete(f"bridge-{params['url']}")
         with contextlib.suppress(Exception):
             if params.get("prog_cid") and params.get("prog_mid"):