Как в FSM передать фото и потом вывести его
Добрый вечер! Столкнулся с проблемой в FSM. Суть машины: пользователь передаёт бренд кроссовок, модель, цену и в конце фото.
Бренд, модель и цену я смог записать в машину, а вот фото не смог. Фото по идее должно записывать в message.photo
, но когда прописал этот метод, он почему-то не работает или я просто неправильно вывел.
Код FSM:
class Form(StatesGroup):
photo = State()
brend = State()
model = State()
price = State()
@dp.message_handler(text='Добавить товар')
async def update_tovar(message: types.Message):
if message.from_user.id == int(ADMIN_ID):
await bot.send_message(message.chat.id, "Добавитте товар\nНапишите бренд:")
await Form.brend.set()
else:
bot.send_message(message.chat.id, "Я тебя не понимаю")
@dp.message_handler(state=Form.brend)
async def process_brend(message: types.Message, state: FSMContext):
async with state.proxy() as data:
data['brend'] = message.text
await message.reply("Введите название модели: ")
await Form.model.set()
@dp.message_handler(state=Form.model)
async def process_modeld(message: types.Message, state: FSMContext):
async with state.proxy() as data:
data['model'] = message.text
await message.answer("Теперь введите цену: ")
await Form.price.set() # либо же UserState.adress.set()
@dp.message_handler(state=Form.price)
async def process_price(message: types.Message, state: FSMContext):
async with state.proxy() as data:
data['price'] = int(message.text)
await message.reply("Теперь отправте фото модели: ")
await Form.photo.set()
@dp.message_handler(state=Form.photo)
async def process_text(message: types.Message, state: FSMContext):
async with state.proxy() as data:
photo = data['photo'] = message.photo[-1].file_id
send_shoes = f"brend: {data['brend']}\n" \
f"model: {data['model']}\n"
await bot.send_message(message.chat.id, send_shoes)
await bot.send_photo(message.chat.id, photo=photo)
await state.finish()
Источник: Stack Overflow на русском