кроме примера FSM кода ничего о самой машине состояний не написано, остается гадать как мне заставить чтобы бот подождал пока пользователь отправил фото, а потом с ним провзаимодействовал
#Меняем стартовое фото
@dp.message_handler(commands=['swp'])
async def switch_welphoto (message: types.Message):
await message.answer ('Отправь медиа, чтобы прикрепить его к приветствию: ')
await ap.welcome_photo.set()
@dp.message_handler(state=ap.welcome_photo)
async def set_welphoto(message: types.Message, state: FSMContext):
photo1 = ap.welcome_photo.photo[0].file_id
document_id = photo1
file_info = await bot.get_file(document_id)
print(f'file_id: {file_info.file_id}')
db.change_welcome_photo (file_info.file_id)
await message.answer ('Фото приветствия изменено, введите "/start" для проверки')
/paste
Сообщение от m dar перемещено на HasteBin Размер: 1186 байт
Состояние это состояние - оно не хранит в себе ничего. Это просто статус. Хранить данные ты можешь параллельно
тогда как заставить dp.message.handler реагировать на состояние с фото, после state.set() хендлер реагирует только если ты отправляешь текст
указать тип принимаемого обновления, сейчас у тебя - текст (по-умолчанию)
content_types="photo"
это в хендлере самом? тогда бот будет реагировать на фото в любое время, я бы не лез тогда в fsm
И стейт тоже пропиши
@dp.message_handler(..., content_types=ContentType.PHOTO)
Пропиши вместе со стейтом, будет только на фото под стейтом реагировать
black . в помощь
Обсуждают сегодня