Задать вопрос
@roxen1212124154

Aiogram 3, как получить фото от пользователя и переслать их в другой канал?

Бот который формирует заявку, задает вопросы и через State() сохраняет ответы пользователя, позже отправляет их в закрытый тг канал.

Последним таким вопросом должно служить получение фото от пользователя (фото поломки кузовного элемента). Нужно получить фото (несколько) от пользователя, я так полагаю, вытащить id фото, и добавить их в итоговое сообщение которое отправляется в канал. Может у кого то есть решение? Начитался про магические фильтры, сохранение ид и отправку, так же медиагруппы, не понимаю что именно нужно здесь использовать. И некоторые из решений, вроде как, позволяют переслать только одно фото, нужно несколько. Aiogram 3.17

Части кода на данный момент:

@router.callback_query(F.data == 'body')
async def cto(callback: callback_query, state: FSMContext):
    await state.set_state(form_body.brand_body)
    await callback.message.answer(f"Здравствуйте,{callback.from_user.first_name}, подскажите марку Вашего автомобиля?")

@router.message(form_body.brand_body)
async def brand(message: Message, state: FSMContext):
    await state.update_data(brand_body=message.text)
    await state.set_state(form_body.model_body)
    await message.answer('Введите модель:')


и т.д. другие вопросы, в конце отправляем

final_message =(f'Новая заявка на кузовной ремонт от пользователя @{message.from_user.username} \nМарка авто: {brand_body} \nМодель авто: {model_body} \nГод выпуска авто: {year_body} \nПричина обращения: {problem_body}')
    try:
        channel_id = "" 
        await bot.send_message(chat_id=channel_id, text=final_message, disable_web_page_preview=True)
        await message.answer(f'Ваша заявка на кузовной ремонт: \nМарка авто: {brand_body} \nМодель авто: {model_body} \nГод выпуска авто: {year_body} \nИПричина обращения: {problem_body} \n \nЗаявка успешно принята!')
    except Exception:
        await message.answer('Возникла техническая ошибка, заявка не была отправлена, попробуйте позже')
  • Вопрос задан
  • 35 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@q2digger
никого не трогаю, починяю примус
когда пользователь присылает группу фото, в апдейте от сервера есть поле "media_group_id", ниже есть список пришедших фоток, в стандартном виде -

"photo": [
{
"file_id": "AgACAgIAAxk....zAQADAgADcwADNgQ",
"file_unique_id": "AQAD....8Uh4",
"file_size": 648,
"width": 90,
"height": 21
},



У всех фоток в группе один media_group_id , обрабатываешь их, складываешь в переменную, и делаешь с ней что хочешь.
Чтобы отправить медиа группу можно воспользоваться MediaGroupBuilder https://docs.aiogram.dev/en/stable/utils/media_gro...
Ответ написан
Ваш ответ на вопрос

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

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