Пишу бота в телеграмм на питоне, при помощи библиотеки aiogram, бот работает, запускается, но FSM машина состояний не запускается, что делать?

from aiogram import Bot, types, Dispatcher
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.utils import executor
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher.filters import Text

from config23 import TOKEN

ID = None


class FSMAdmin(StatesGroup):
    name = State()
    date = State()


storage = MemoryStorage()

bot = Bot(token=TOKEN)
dp = Dispatcher(bot, storage=storage)

b1 = KeyboardButton('/Продолжить')
b2 = KeyboardButton('/загрузить')

kb_client = ReplyKeyboardMarkup(resize_keyboard=True)
form = ReplyKeyboardMarkup(resize_keyboard=True)

kb_client.add(b1)
form.add(b2)


@dp.message_handler(commands=['start', 'help'])
async def commands_start(message: types.Message):
    try:
        await bot.send_message(message.from_user.id, 'Привет, я бот, который поможет тебе в напоминании'
                                                     ' о чем-либо, для '
                                                     'продолжения работы нажми на кнопку.',
                               reply_markup=kb_client)
        await message.delete()
    except:
        await message.reply('Общение с ботом работает исключитьно через ЛС, напишите ему:'
                            '\nhttps://t.me/Reminderfunbot')


@dp.message_handler(commands=['Продолжить'])
async def prod(message: types.Message):
    await bot.send_message(message.from_user.id, 'Сейчас мы заполним согласно формату данные, которые мне необходимы '
                                                 'и в указанное время я оповещу тебя)\n'
                                                 'ВАЖНО: Если хотите, чтобы бот работал правильно, после нажатия на'
                                                 ' кнопку делайте только то, что от вас требует бот.',
                           reply_markup=form)


# @dp.message_handler(commands="загрузить", state="*")
async def cm_start(message: types.Message):
    if message.from_user.id == ID:
        await FSMAdmin.name.set()
        await message.reply('Напиши мне название мероприятия')


# @dp.message_handler(state=FSMAdmin.name)
async def load_name(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        data['name'] = message.text
    await FSMAdmin.next()
    await message.reply('Напиши дату')


# @dp.message_handler(state=FSMAdmin.date)
async def load_date(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        data['date'] = message.text

    async with state.proxy() as data:
        await message.reply(str(data))
    await state.finish()


# @dp.message_handler(state="*", commands='отмена')
# @dp.message_handler(Text(equals='', ignore_case=True), state="*")
async def cancel_handler(message: types.Message, state: FSMContext):
    current_state = await state.set_state()
    if current_state is None:
        return
    await state.finish()
    await message.reply('ОК')


def reg_handlers(dp: Dispatcher):
    dp.register_message_handler(cm_start, commands='загрузить', state=None)
    dp.register_message_handler(load_name, state=FSMAdmin.name)
    dp.register_message_handler(load_date, state=FSMAdmin.date)
    dp.register_message_handler(cancel_handler, state="*", commands='отмена')
    dp.register_message_handler(cancel_handler, Text(equals='', ignore_case=True), state="*")


if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)


Вот весь код, помогите пожалуйста :(

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

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

Понял в чем проблема вот исправленный, рабочий код -

class FSMAdmin(StatesGroup):
    name = State()
    dataus = State()


@dp.message_handler(commands='Загрузить')
async def f_start(message: types.Message):
    await FSMAdmin.name.set()
    await message.answer('Напиши мне название мероприятия')


@dp.message_handler(state=FSMAdmin.name)
async def load_name(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        data['name'] = message.text
    await FSMAdmin.dataus.set()
    await message.reply('Напиши дату')


@dp.message_handler(state=FSMAdmin.dataus)
async def load_data(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        data['dataus'] = message.text
    async with state.proxy() as data:
        await message.reply(str(data))
    await state.finish()
→ Ссылка