Отправка нескольких медиа произвольного количества и типа одним сообщением TelegramBot Java
Мне нужно, чтобы мой тг-бот отправлял сообщение с несколькими медиафайлами и текстом.
Однако:
- Количество файлов меняется от сообщения к сообщению и неизвестно заранее (минимум 1, максимум 10)
- В одном сообщении могут комбинироваться разные типы файлов (картинки, видео, гифки)
Я пытаюсь использовать метод SendMediaGroup(), однако он не принимает списки в качестве параметра. У меня получилось только захардкодить параметры заранее известными значениями.
Получается код вида:
telegramBot.execute(new SendMediaGroup(chatID,
fileURL0.caption(text),
fileURL1,
...
fileURL9));
Вопрос: как избежать хардкода и передавать во второй параметр SendMediaGroup() контейнер с несколькими объектами?
Использую библиотеку:
com.github.pengrad:java-telegram-bot-api:6.2.0
Ответы (1 шт):
Конструктор класса SendMediaGroup принимает на вход varargs из объектов InputMedia.
Varargs в Java преобразуется в обычный массив на стадии компиляции. Чтобы передать список в varargs, его нужно преобразовать в массив:
List<InputMedia<?>> mediaList = ...;
InputMedia<?>[] mediaArray = mediaList.toArray(InputMedia[]::new);
telegramBot.execute(new SendMediaGroup(chatId, mediaArray));
Если у вас версия Java ниже 1.8, то используйте new InputMedia[0] вместо InputMedia[]::new для создания нового массива.