Commit b12de29
benny-dou <60535774+benny-dou@users.noreply.github.com>
2025-01-23 05:21:49
feat(bridge): copy media group
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"):