@miroshnik991
Изучаю python

Как сохранять фото от пользователя в Телеграм боте?

пишу телеграм бота на python aiogram, не получается реализовать сохранение фото, отправленных пользователем, в чем проблема?
# 1 вариант выдает предупреждение
@dp.message_handler(content_types=['photo'])
 async def get_photo(message: types.Message):
     await message.photo[-1].download('C:/Antony/py_projects/qr_code_bot/photos/ggg.jpg')

#Код работает, но ругается и пишет: DeprecationWarning: destination parameter is deprecated, please use destination_dir or destination_file.
  warn_deprecated(

# 2 вариант выдает ошибку 
@dp.message_handler(content_types=['photo'])
async def get_photo(message):
    file_info = await bot.get_file(message.photo[-1].file_id)
    downloaded_file = await bot.download_file(file_info.file_path)
    print(downloaded_file)

    with open("C:/Antony/py_projects/qr_code_bot/photos/file.jpg", 'wb') as file_object:
        file_object.write(downloaded_file)
        await bot.send_message(message, f'Ваш  файл сохранен"')

#пишет TypeError: a bytes-like object is required, not '_io.BytesIO'
  • Вопрос задан
  • 6543 просмотра
Пригласить эксперта
Ответы на вопрос 3
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Так прочти deprecation warning. Это не ошибка, а предупреждение, что данный параметр в будущих версиях будет исключен, а вместо него будут введены другие параметры, и сказано, какие именно.
Работает - и отлично.
Ответ написан
@hbombur
Привет!
Чтобы предупреждение ушло явно укажи название параметра в данной части кода
await message.photo[-1].download('C:/Antony/py_projects/qr_code_bot/photos/ggg.jpg')

Исправленный вариант
await message.photo[-1].download(destination_file='C:/Antony/py_projects/qr_code_bot/photos/ggg.jpg')
Ответ написан
@Abbyarrell
@geometry dash lite Пожалуйста, ознакомьтесь с уведомлением об устаревании. Это не ошибка, а скорее уведомление о том, что эта опция не будет доступна в будущих редакциях; вместо этого будут добавлены новые параметры и будет указано какие именно.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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