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

如何使用WTelegram包下载单条消息中的全部图片与视频?

下载WTelegramClient中单条消息的所有媒体内容

当Telegram消息包含多张图片/多个视频时,消息的Media属性实际是TL.MessageMediaAlbum类型(而非单个媒体对象),该类型承载了整个媒体组的所有项。以下是具体实现步骤和代码:

核心逻辑

  1. 判断消息的Media是否为MessageMediaAlbum类型
  2. 若是,遍历MessageMediaAlbum.album数组中的每一个媒体项
  3. 针对不同媒体类型(照片、视频),提取对应文件信息并调用DownloadFileAsync完成下载

代码实现

首先处理消息的媒体类型判断与遍历:

// 假设已获取目标TL.Message对象message和WTelegram.Client实例client
if (message.Media is TL.MessageMediaAlbum albumMedia)
{
    // 遍历媒体组内的所有媒体项
    foreach (var mediaItem in albumMedia.album)
    {
        await DownloadSingleMedia(mediaItem, client);
    }
}
else if (message.Media != null)
{
    // 处理单媒体消息的情况
    await DownloadSingleMedia(message.Media, client);
}

然后实现单个媒体项的下载方法:

private static async Task DownloadSingleMedia(TL.MessageMedia media, WTelegram.Client client)
{
    string savePath = null;
    switch (media)
    {
        case TL.MessageMediaPhoto photoMedia:
            // 获取照片的最高分辨率版本
            var largestPhoto = photoMedia.photo.GetBiggest();
            savePath = $"downloaded_photo_{largestPhoto.id}.jpg";
            await client.DownloadFileAsync(largestPhoto, savePath);
            break;
        
        case TL.MessageMediaDocument docMedia:
            var document = docMedia.document as TL.Document;
            if (document == null) break;
            
            // 判断是否为视频文件
            if (document.mime_type.StartsWith("video/"))
            {
                var largestVideo = document.GetBiggest();
                savePath = $"downloaded_video_{largestVideo.id}.mp4";
                await client.DownloadFileAsync(largestVideo, savePath);
            }
            // 如需支持其他文档类型,可在此扩展判断逻辑
            break;
    }
    
    if (!string.IsNullOrEmpty(savePath))
        Console.WriteLine($"媒体已保存至:{savePath}");
}

关键说明

  • MessageMediaAlbum.album:该数组存储了媒体组内的所有媒体对象(照片、视频等)
  • GetBiggest():WTelegramClient提供的扩展方法,自动筛选出媒体的最高分辨率/最大尺寸的文件版本
  • 类型区分:通过switch-case区分照片(MessageMediaPhoto)和视频(MessageMediaDocument,需结合MIME类型判断),确保正确处理不同媒体格式

内容的提问来源于stack exchange,提问作者Dmitry

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 06:10:58