Задать вопрос
@Asad1502
Начинающий Frontend-разрбаотчик

Как получить фото в aiogram и отправить пользователю нужное ему фото?

Вообще задача такая, нужно чтобы бот сохранял в бд каким то образом фото. мб байты фото или айди, которое ему отправляет админ. И когда пользователь отправляет id фото нужно отправить пользователю нужное ему фото. Если чё это бот для клиники. Админ отправляет фото и id анализа, и когда пользователь отправляет id анализа нужно отправить ему нужный анализ
  • Вопрос задан
  • 11049 просмотров
Подписаться 1 Средний 5 комментариев
Пригласить эксперта
Ответы на вопрос 2
@GofMan33333
Чтобы получить фото в aiogram, вам нужно использовать метод Message.photo у сообщения, которое пришло от пользователя. Он вернет список фотографий, которые были отправлены сообщением. Каждая фотография - это объект PhotoSize. Вот пример кода, который получает фото из сообщения:

@dp.message_handler(content_types=ContentType.PHOTO)
async def process_photo(message: types.Message):
    # Получаем список фотографий в сообщении
    photos = message.photo

    # Перебираем фотографии и обрабатываем их
    for photo in photos:
        # Скачиваем фотографию
        await photo.download()
        # Обрабатываем фотографию (например, сохраняем ее в базу данных)
        process_photo(photo.file)

Чтобы отправить фото пользователю, вы можете использовать метод bot.send_photo. Он принимает идентификатор чата (куда отправлять фото) и фотографию (в виде InputFile или str)
Ответ написан
Комментировать
@lxlermit
@router.message(Form.work_with_photo)
async def echo_photo_message(message: Message, state: FSMContext, bot: Bot):
    if message.photo:
        file_name = f"photos/{message.photo[-1].file_id}.jpg"
        await bot.download(message.photo[-1], destination=file_name)

photo[от -1(лучшее качество фото) до -4(худшее качество)]
важно, чтобы каталог photos - существовал, иначе будет ошибка: FileNotFoundError: [Errno 2] No such file or directory:
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы