Как создать папку с помощью Aiogram

Уже почти неделю мучаюсь над тем как можно реализовать создание папки или файла через aiogram

Код:

@dp.message_handler(commands=["CreateFile"])
async def CreateFile(CreateFile):
    await CreateFile.answer("<b>  типы\n\n\n/File Создает файл\n\n\n/Folder Создает папку</b>", parse_mode="HTML")

    @dp.message_handler(commands=["Folder"])
    async def Folder(folder):
        await folder.answer("<b>Введите путь где будет создана папка</b>", parse_mode="HTML")
        @dp.message_handler()
        async def path(path):
            await path.answer("<b>Введите имя папки</b>", parse_mode="HTML")
            @dp.message_handler()
            async def name(name):
                os.system("md " + name.text)

Но оно почему-то зацикливается Скрин


Ответы (1 шт):

Автор решения: oleksandrigo

У меня работает.

from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import StatesGroup, State
from aiogram.contrib.fsm_storage.memory import MemoryStorage

import config # игнорируй

bot = Bot(token=config.BOT_TOKEN) # делай как у себя
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)

class FSMFolderCreate(StatesGroup):
    input_path = State()
    input_name = State()


@dp.message_handler(commands=["CreateFile"])
async def CreateFile(message: types.Message):
    await message.answer("<b>  типы\n\n\n/File Создает файл\n\n\n/Folder Создает папку</b>", parse_mode="HTML")


@dp.message_handler(commands=["folder"])
async def cm_folder(message: types.Message):
    await message.answer("<b>Введите путь где будет создана папка</b>", parse_mode="HTML")
    await FSMFolderCreate.input_path.set()


@dp.message_handler(state=FSMFolderCreate.input_path)
async def get_path_to_folder(message: types.Message, state: FSMContext):
    await message.answer("<b>Введите имя папки</b>", parse_mode="HTML")
    async with state.proxy() as data:
        data['path'] = message.text
    await FSMFolderCreate.input_name.set()


@dp.message_handler(state=FSMFolderCreate.input_name)
async def get_name_folder(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        path_to_folder = data['path']
        name_folder = message.text
        os.makedirs(os.path.join(path_to_folder, name_folder))
    await state.finish()
→ Ссылка