telegram bot - Bad请求:文件必须非空



我想用c# 15.7.1版本的telegram bot发送一个文本文件,代码如下:

var csvFile = new StringBuilder();
foreach ( var person in persons)
{
var output = new List<string>
{
person.Fardi.Name,
person.Fardi.LastName,
person.Fardi.PhoneNumber,
person.Fardi.BrithYear.ToString(),
person.Fardi.Father
};
csvFile.AppendLine(string.Join(_delimiter, output));
}
using var stream = new MemoryStream();
using var streamWriter = new StreamWriter(stream, Encoding.UTF8);
await streamWriter.WriteAsync(csvFile.ToString());
await streamWriter.FlushAsync();
await _botClient.SendDocumentAsync(new ChatId(chatId), new InputOnlineFile(stream, "test.txt"), replyMarkup: GetInlineKeyboard(buttons));

但是当我发送请求时,出现这个错误:

Error while sending message
Telegram.Bot.Exceptions.ApiRequestException: Bad Request: file must be non-empty
at Telegram.Bot.TelegramBotClient.MakeRequestAsync[TResponse](IRequest`1 request, CancellationToken cancellationToken)

但是我的流不是空的,它的长度是200。

我不知道电报机器人是什么,但是修复可能就像用MemoryStream.Position倒带一样简单

获取或设置流中的当前位置。

using var stream = new MemoryStream();
...
stream.Position = 0;
await _botClient.SendDocumentAsync(
new ChatId(chatId), 
new InputOnlineFile(stream, "test.txt"), 
replyMarkup: GetInlineKeyboard(buttons));

最新更新