Ошибка "AttributeError: 'NoneType' object has no attribute 'file_id'" возникает потому, что вы используете декоратор `@dp.message()` вместо `@dp.message(content_types=types.ContentType.DOCUMENT)`, чтобы ограничить тип контента только документами. Функция `get_img` принимает только сообщения с документами, поэтому вам необходимо изменить декоратор в соответствии с этим.
Вот исправленный код:
```python
@dp.message(Command('kitty'))
async def start(message: types.Message):
await message.answer('отправь картинку котика:')
@dp.message(content_types=types.ContentType.DOCUMENT) # измененный декоратор
async def get_img(message: types.Message):
file_info = await bot.get_file(message.document.file_id)
downloaded_file = await bot.download_file(file_info.file_path)
file_name = 'img_' + str(random.randint(1, 100)) + '.jpg'
file_path = os.path.join(folder_path, file_name)
with open(file_path, 'wb') as file:
file.write(downloaded_file.getvalue())
await message.answer('котик успешно сохранен!')
@dp.message(Command('photo'))
async def photo(message: types.Message):
image_files = os.listdir(folder_path)
random_image = random.choice(image_files)
with open(os.path.join(folder_path, random_image), 'rb') as photo:
await message.reply_photo(photo)
```
Теперь ошибка должна быть исправлена, и код должен работать корректно. Функция `get_img` сохраняет изображение, а функция `photo` отправляет случайное изображение пользователю при вызове команды `/photo`.