如何下载文件电报机器人?

时间:2019-09-08 17:27:03

标签: c# telegram telegram-bot

我使用bot API v15.0.0.0并使用此代码从用户下载了文件(照片,文档,音频等),但是当我运行时,文件未打开且文件大小为0 KB。

var message = update.Message;

else if (message.Type == MessageType.Photo) {

  var file = bot.GetFileAsync(message.Photo.LastOrDefault().FileId);
  var fileName = file.Result.FileId + "." + file.Result.FilePath.Split('.').Last();

  using(var saveImageStream = File.Open(fileName, FileMode.Create)) 
  {
     bot.DownloadFileAsync(file.Result.FilePath, saveImageStream);
  }
  bot.SendTextMessageAsync(chatId, "Image save");
}

1 个答案:

答案 0 :(得分:0)

saveImageStream在异步DownloadFileAsync有时间写入流之前被废弃。

代码应等待异步函数调用,并避免进行阻塞调用,例如.Result.Wait()

//...

var file = await bot.GetFileAsync(message.Photo.LastOrDefault().FileId);
var fileName = file.FileId + "." + file.FilePath.Split('.').Last();

using(var saveImageStream = File.Open(fileName, FileMode.Create)) {
    await file.FileStream.CopyToAsync(saveImageStream);
}
await bot.SendTextMessageAsync(chatId, "Image save");

//...

花点时间查看Bot Code Examples

https://github.com/TelegramBots/Telegram.Bot/tree/master/src/Telegram.Bot