@Proritsatel

Как принять несколько фото в телеграмм-боте?

Передо мной стояла задача:
Принять на стороне бота несколько фотографий которые отправляет пользователь
Сначала у меня получилось принимать только одну фотографию.
Использовал pyTelegramBotApi
В итоге вот что получилось:

@bot.message_handler(content_types=['photo'])
def handle_docs_photo(message):
    try:
        chat_id = message.chat.id
        file_info_1 = bot.get_file(message.photo[-1].file_id)
        bot.send_message(message.chat.id, file_info_1)
        downloaded_file = bot.download_file(file_info_1.file_path)
        
        src = dir + '\\' + file_info_1.file_path.split('/')[-1]
        bot.send_message(message.chat.id, src)
        with open(src, 'wb') as new_file:
            new_file.write(downloaded_file)

    except Exception as e:
        bot.reply_to(message, e)

Но вот тут возникла проблема - если я отправляю одну фотографию без сжатия - то ничего не происходит,
если я отправляю например 4 фотографии, то функция def handle_docs_photo(message): сохраняет каждый раз на одну фотографию меньше, в данном случае 3 фото.

В чём может быть проблема и как её можно решить?
  • Вопрос задан
  • 1105 просмотров
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
если я отправляю одну фотографию без сжатия - то ничего не происходит

Фото без сжатия - документ. Для него есть специальный content-type - document


если я отправляю например 4 фотографии, то функция def handle_docs_photo(message): сохраняет каждый раз на одну фотографию меньше, в данном случае 3 фото

Это весь код? Если да - он работает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы