24
Май
2018

Как скачать полученное фото в TelegramBot?

Есть задача скачать фото которое было отправлено боту. Пытаюсь делать и в результате появились вопросы. Вот так скачиваю:

if (update.hasMessage() && update.getMessage().hasPhoto())
     {

    long chat_id = update.getMessage().getChatId();
    List<PhotoSize> photos = update.getMessage().getPhoto();

    String f_id = photos.stream()
            .sorted(Comparator.comparing(PhotoSize::getFileSize).reversed())
            .findFirst()
            .orElse(null).getFileId();



    GetFile getFileRequest = new GetFile();
    getFileRequest.setFileId(update.getMessage().getPhoto().get(0).getFileId());
    org.telegram.telegrambots.api.objects.File file = getFile(getFileRequest);

    File f_path = new File("https://api.telegram.org/file/bot"+getBotToken()+"/"+file.getFilePath());

    String caption = "file_id: " + f_id + "\nfile_path: " + f_path;

    SendPhoto msg = new SendPhoto()
            .setChatId(chat_id)
            .setPhoto(f_id)
            .setCaption(caption);
    try {
        sendPhoto(msg);
    } catch (TelegramApiException e) {
        e.printStackTrace();
    }
    }

И появились вопросы: 1.Что в этом коде можно убрать? На мой взгляд это какой-то быдлокод получился. 2. Что использовать вместо

getFile(getFileRequest);

т.к он объявлен устаревшим. 3. Почему переходя по полученной ссылке, я скачиваю фото которое уменьшено? Т.е отправил 800*600, а скачиваешь чуть ли не аватарку. Но отправляет обратно нормальный размер. Может кто-то поделится нормальным рабочим кодом?

Источник: https://ru.stackoverflow.com/questions/832700/%D0%9A%D0%B0%D0%BA-%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5-%D1%84%D0%BE%D1%82%D0%BE-%D0%B2-telegrambot

Тебе может это понравится...

Добавить комментарий