c# Telegram bot api Отправить альбом IAlbumInputMedia
Нужно отправить сообщение которое содержит фото и видео в виде альбома.
Пример кода SendMediaGroup
Message[] messages;
using (Stream
stream0 = System.IO.File.OpenRead(Constants.PathToFile.Videos.GoldenRatio),
stream1 = System.IO.File.OpenRead(Constants.PathToFile.Videos.MoonLanding),
stream2 = System.IO.File.OpenRead(Constants.PathToFile.Photos.Bot)
)
{
IAlbumInputMedia[] inputMedia =
{
new InputMediaVideo(new InputMedia(stream0, "GoldenRatio.mp4"))
{
Caption = "Golden Ratio",
Height = 240,
Width = 240,
Duration = 28,
},
new InputMediaVideo(new InputMedia(stream1, "MoonLanding.mp4"))
{
Caption = "Moon Landing"
},
new InputMediaPhoto(new InputMedia(stream2, "bot.gif"))
{
Caption = "Bot"
},
};
messages = await BotClient.SendMediaGroupAsync(
chatId: _fixture.SupergroupChat.Id,
inputMedia: inputMedia
);
}
Код на примере выше подходит если заранее известно сколько файлов нужно отправить.
У меня есть папка, в ней содержиться какое-то количество файлов (часть изображений часть видео) их я хочу отправить в виде сообщения.
Как inputMedia можно заполнить в цикле?
Спасибо
Ответы (1 шт):
Автор решения: Oleksandr Kostian
→ Ссылка
Сделай два списка
List<Stream>
List<InputMediaVideo>
В цикле пройди по всем файлам и создай stream и потом обьект InputMedia, добавь оба в списки.
Конвертируешь список в масив и отправляешь.
После отправки вручную идешь по потоках и закрываешь их