如何通过WTelegram.Client获取公开频道/论坛的媒体URL?
获取WTelegram.Client中公开频道/论坛的媒体URL方法
完全可以通过WTelegram.Client实现公开频道/论坛的媒体URL生成,无需下载媒体文件,直接构造可引用的CDN链接即可。以下是针对频道头像(Chat.Photo)的具体实现步骤和代码示例:
实现步骤
- 通过
Contacts_ResolveUsername获取目标公开频道的信息 - 提取频道头像的
Photo对象,筛选出尺寸最大的PhotoSize(保证画质最优) - 调用
Upload_GetFile获取该媒体文件的CDN存储详情 - 根据返回的文件信息构造公开可访问的URL
代码示例
var resolved = await client.Contacts_ResolveUsername(peerName); // 检查频道是否设置了头像 if (resolved.Chat.Photo is Photo channelPhoto) { // 筛选出尺寸最大的头像资源 var largestSize = channelPhoto.Sizes .OrderByDescending(s => s.Width * s.Height) .FirstOrDefault() as PhotoSize; if (largestSize == null) return; // 获取文件的CDN存储信息 var fileInfo = await client.Upload_GetFile(new InputFileLocation { id = largestSize.photo_id, access_hash = largestSize.access_hash, file_reference = largestSize.file_reference }, offset: 0); // 构造公开CDN链接 var publicMediaUrl = $"https://cdn{fileInfo.dc_id}.t.me/c/{fileInfo.file_path}"; // 可直接输出或在业务逻辑中使用该URL Console.WriteLine($"频道头像公开URL: {publicMediaUrl}"); }
额外说明
- 该逻辑仅适用于公开频道/论坛的媒体内容,私人聊天的媒体无法通过公开CDN访问
- 频道内的其他公开媒体(如图片、视频、文档)的URL生成逻辑类似,只需从对应媒体对象中提取
id、access_hash、file_reference参数,传入Upload_GetFile即可 - 生成的URL直接指向Telegram的CDN服务器,可直接在前端或其他场景引用
内容的提问来源于stack exchange,提问作者Oliver Weichhold
相关产品推荐
相关产品推荐

