首页 > 解决方案 > 使用 TLSharp 的 GetFile 函数的 FILEREF_UPGRADE_NEEDED

问题描述

我正在尝试从电报中的对话中下载文件。我正在使用 TLSharp 库...

请检查我的代码:

      var result = await client.GetContactsAsync();

                var user = result.Users
                    .OfType<TLUser>()
                    .FirstOrDefault(x => x.Phone  == "<phoneNumber>");

                var inputPeer = new TLInputPeerUser() { UserId = user.Id };
                var res = await client.SendRequestAsync<TLMessages>(new TLRequestGetHistory() { Peer = inputPeer });
                var document = res.Messages
                    .OfType<TLMessage>()
                    .Where(m => m.Media != null)
                    .Select(m => m.Media)
                    .OfType<TLMessageMediaDocument>()
                    .Select(md => md.Document)
                    .OfType<TLDocument>()
                    .First();

                var resFile = await client.GetFile(
                    new TLInputDocumentFileLocation()
                    {
                        AccessHash = document.AccessHash,
                        Id = document.Id,
                        Version = document.Version
                    },

(int)Math.Pow(2, Math.Ceiling(Math.Log(document.Size, 2))) * 4);

此代码出现此异常:

FILEREF_UPGRADE_NEEDED

请问,有什么方法可以从对话中获取文件而不会出现此错误?

标签: c#telegramgetfilestelegram-apitlsharp

解决方案


TLSharp 似乎不再维护。您可能想切换到类似但更好的WTelegramClient 。

然后您可以使用简化下载过程的辅助方法:

using (var stream = File.Create(outputFilename))
   await client.DownloadFileAsync(document, stream);

推荐阅读