c# - 使用 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
请问,有什么方法可以从对话中获取文件而不会出现此错误?
解决方案
TLSharp 似乎不再维护。您可能想切换到类似但更好的WTelegramClient 。
然后您可以使用简化下载过程的辅助方法:
using (var stream = File.Create(outputFilename))
await client.DownloadFileAsync(document, stream);
推荐阅读
- thymeleaf - 为什么 Thymeleaf th:insert 删除内容直到第一个标签
- java - 自定义环境中的 QLearning 网络每次都选择相同的动作,尽管有大量的负奖励
- r - 由于引号引起的摘要错误消息
- r - 如何在ggplot2中添加人脸标签
- node.js - 使用 fs.existsSync ...我无法将输出设为 true ...(已编辑)
- flutter - 我想在应用栏之前放一张图片
- javascript - 在没有表格的情况下以ajax发送图像
- amazon-web-services - AWS 中禁用的激活服务
- python - 如何使用python在csv中用NaN替换空格、空、N/A、na和NA?
- firebase - Nuxt 服务器端渲染应用程序具有云功能的良好 SEO