You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telegram API如何实现包含多个媒体的相册转发功能?

Telegram API 转发多媒体相册实现方案

Telegram 平台的相册(媒体组)本质是带有相同media_group_id属性的多条关联消息,单条forwardMessage仅能转发单条消息,因此无法保留相册合并形态,可通过以下两种方案实现需求:


方案1:直接批量转发(保留源发送者/转发标记)

使用forwardMessages批量传递同个媒体组的所有消息ID,Telegram 服务端会自动识别关联关系,转发后仍合并为相册形态:

  1. 先获取目标相册的所有关联消息ID:
    任选相册内的任意一条消息,通过其media_group_id属性,调用消息查询接口拉取同组内的全部消息,提取所有message_id组成数组
  2. 调用forwardMessages接口传入参数:
    • chat_id:目标聊天ID
    • from_chat_id:源聊天ID
    • message_ids:上一步获取的同媒体组message_id数组
    • 可选参数如disable_notification、protect_content可按需添加

Python 端(基于Pyrogram框架)示例代码:

from pyrogram import Client

# 初始化客户端,需替换为自己的api_id、api_hash
app = Client("my_client", api_id=123456, api_hash="abcdef1234567890abcdef1234567890")

async def forward_album(target_chat, source_chat, one_album_msg_id):
    # 直接通过单条相册消息获取完整媒体组
    album_messages = await app.get_media_group(source_chat, one_album_msg_id)
    msg_id_list = [msg.id for msg in album_messages]
    # 批量转发
    await app.forward_messages(
        chat_id=target_chat,
        from_chat_id=source_chat,
        message_ids=msg_id_list
    )

with app:
    app.run(forward_album("@target_chat_username", "@source_chat_username", 1024))

方案2:无转发标记转发(相当于主动发送相册)

如果需要隐藏转发来源,可提取相册媒体信息后调用sendMediaGroup接口重新发送:

  1. 拉取同相册的所有消息,提取每个媒体的file_id、媒体类型(photo/video/animation等)、配文信息
  2. 按照API要求构造InputMediaPhoto/InputMediaVideo等类型的数组
  3. 调用sendMediaGroup接口传入数组发送至目标聊天,发送后会自动合并为相册形态

注意事项

  • 单个媒体组最多支持10个媒体文件,超出数量需要拆分多个媒体组发送
  • 以上逻辑同时适配用户API和Bot API,对应方法名和参数规则完全一致
  • 禁止单独调用forwardMessage逐条转发媒体组内的消息,该操作会导致消息散列为单条,不会合并为相册

内容的提问来源于stack exchange,提问作者AH.Pooladvand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:45:03